歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Linux C編程的一個小例子——實現一個簡單的who命令(第一版)

Linux C編程的一個小例子——實現一個簡單的who命令(第一版)

日期:2017/3/1 9:49:35   编辑:Linux編程

在貼代碼之前,有一些東西是需要講清楚的。

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 <stdio.h>
#include <utmp.h>
#include <fcntl.h>
#include <unistd.h>


#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,&current_record,reclen) == reclen ){
show_info(&current_record);
}

close(utmpfd);

return 0;
}

Copyright © Linux教程網 All Rights Reserved