Linux C编程的一个小例子——实现一个简单的who命令(第一版)

2023-04-12


在贴代码之前,有一些东西是需要讲清楚的。


1)Linux C编程用到了一些只有Linux下才有的函数。而将这些放到Windows下的话,会报错。


也就是说,讲一下代码在windows下运行是会报错的。。。



2)有人会有疑问。书本上的是,先使用VI编辑who.c文件,然后再命令行的状态下使用GCC命令,生成一个.o文件,


然后在运行该文件。假如使用eclipse在Linux进行C编码,那么是不是现在eclipse写好who.c文件,然后再命令行模式下


进入到eclipse的工作目录,然后在使用GCC命令生成一个.o文件,然后再运行该文件。那么使用eclipse进行Linux C开发,不就仅仅是使用eclipse的编辑功能来代替VI而已嘛,其他的都一样嘛,然而eclipse下Linux C开发会更麻烦。。。


其实,不是这样的。使用eclipse进行 Linux C开发,写完who.c文件以后,你只需要在eclipse下单击Build Configure


然后,就直接运行,这时,在eclipse的控制台下输出的结果与你在命令中输出的结果是一样的。。。


In a word,也就是说,在命令行模式下,你需要进行以下几步:使用VI编辑who.c文件-----》使用gcc 命令shengcheng .o文件----》运行该文件


而在eclipse下,这个流程就可以变成:在eclipse中编写who.c代码-------》编译(Build Configure)----》运行(在控制台中输出结果)


很显然,在eclipse进行 Linux C开发的优势有以下几点:


1)eclipse所提供的强大的书写功能。其中最实用的就是基本的语法检查功能


2)程序员不需要在使用命令去生成.o文件


3)在控制台中输出的结果更让人一目了然...



----------------------------------------------------------------------------------------


好,说了那么多,以下就在贴上在Linux C下自己实现一个who命令的代码



/*
 * who1.c
 *
 *  Created on: Dec 30, 2013
 *      Author: fedora
 */

#include 
#include 
#include 
#include 


#define SHOWHOST

void show_info(struct utmp* utbufp){
	printf("%-8.8s",utbufp->ut_name);
	printf(" ");
	printf("%-8.8s",utbufp->ut_line);
    printf(" ");
    printf("%10ld",utbufp->ut_time);
    printf(" ");

#ifdef SHOWHOST
    printf("( %s )",utbufp->ut_host);
#endif

    printf("\n");
}
int main(){
	struct utmp current_record;
	int utmpfd;
	int reclen = sizeof(current_record);

	if((utmpfd = open(UTMP_FILE,O_RDONLY)) == -1){
		perror(UTMP_FILE);

		return 1;
	}

	while( read(utmpfd,¤t_record,reclen) == reclen ){
		show_info(¤t_record);
	}

	close(utmpfd);

	return 0;
}







本文仅代表作者观点,版权归原创者所有,如需转载请在文中注明来源及作者名字。

免责声明:本文系转载编辑文章,仅作分享之用。如分享内容、图片侵犯到您的版权或非授权发布,请及时与我们联系进行审核处理或删除,您可以发送材料至邮箱:service@tojoy.com