歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

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

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

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