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;
}







 



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
目 录 第一篇 Linux和C编程基础  第1章 Linux系统概述   1.1 Linux操作系统介绍     1.1.1 Linux的发展历程     1.1.2 Linux的特性     1.1.3 Linux的内核版本和发行版本    1.2 C语言简介     1.2.1 C语言的发展历史     1.2.2 C语言的特点    1.3 Linux的安装、启动与关闭    1.4 Linux的基本使用     1.4.1 Linux终端     1.4.2 Linux Shell     1.4.3 Linux的常用命令    1.5 Linux下程序的开发环境和开发过程    1.6 习题   第2章 C编程基础、Vi和Emacs编辑器    2.1 C程序的结构    2.2 C语言的基本数据类型     2.2.1 整型     2.2.2 浮点型     2.2.3 字符型    2.3 运算符和表达式     2.3.1 算术运算符与算术表达式     2.3.2 赋值运算符与赋值表达式     2.3.3 逗号运算符与逗号表达式    2.4 标准输入输出函数     2.4.1 字符输出函数putchar     2.4.2 字符输入函数getchar     2.4.3 格式化输出函数printf     2.4.4 格式化输入函数scanf    2.5 Vi编辑器的使用     2.5.1 Vi的工作模式     2.5.2 启动Vi     2.5.3 保存文件和退出Vi     2.5.4 光标的移动     2.5.5 文本的删除     2.5.6 文本查找和替换     2.5.7 文本的复制与粘贴    2.6 Emacs编辑器的使用    2.7 命名规范     2.7.1 标识符     2.7.2 关键字     2.7.3 命名规范    2.8 面试题选与实例精讲     2.8.1 面试题选     2.8.2 实例精讲    2.9 习题   第3章 C程序控制结构和gcc编译器    3.1 C程序的控制结构     3.1.1 C程序语句概述     3.1.2 C程序的3种基本控制结构    3.2 分支控制结构     3.2.1 关系运算符与关系表达式     3.2.2 逻辑运算符与逻辑表达式     3.2.3 if语句     3.2.4 switch语句    3.3 循环控制结构     3.3.1 while语句     3.3.2 do...while语句     3.3.3 for语句     3.3.4 break语句和continue语句    3.4 gcc编译器     3.4.1 程序的编译过程     3.4.2 gcc的常用选项     3.4.3 gcc的报错类型及对策    3.5 面试题选与实例精讲     3.5.1 面试题选     3.5.2 实例精讲    3.6 习题   第4章 C函数、数组、指针和调试器gdb   第5章 C语言预处理、结构体和make的使用  第二篇 Linux系统编程  第6章 文件操作   第7章 进程控制   第8章 线程控制   第9章 信号及信号处理   第10章 进程间通信  第三篇 Linux网络和图形界面编程  第11章 网络编程   第12章 GTK+图形界面编程  第四篇 Linux项目实践  第13章 项目实践:BT下载软件的开发
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

帅气的东哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值