UNIX环境高级编程——第一个程序

       开始接触Linux了,在网上查了一大堆资料,都说《Unix环境高级编程》是Linux界的“圣经”,那我就从这本书开始学吧。

      该书的第一个程序即shell ls的实现就把我给难住了,因为头文件“apue.h”放在/usr/include/中还是会出错,在网上查了查资料,方法很麻烦,看着头晕,我这人就是有这毛病,怕麻烦。不过还好,找到一篇文章提供了一个简单方法,但是据说有个别的程序会出现重定义的情况,先就用这个方法配置吧,以后遇到问题再解决。方法如下:

     1. 下载src.2e.tar.gz  网址:www.apuebook.com

     2. 解压src.2e.tar.gz  在终端输入tar zxvf src.2e.tar.gz ,注意:src.2e.tar.gz应该放在当前目录下,我的是放在home下的

     3. 进入解压文件apue.2e/include, 打开apue.h,在最后一行的#endif /* _APUE_H */前添加 #include "error.h" 保存

     4. 将apue.h文件拷贝到/usr/include/下,在终端使用命令:sudo cp apue.2e/include/apue.h /usr/include/

     5.将apue.2e/lib下的error.c文件拷贝到/usr/include/下 ,在终端使用命令:sudo cp apue.2e/lib/error.c /usr/include/

好,至此大功基本告成,我们来测试一下,书上的源代码如下:

#include "apue.h"
#include <dirent.h>
int main(int argc, char *argv[])
{
  DIR *dp;
  struct dirent *dirp;
  if(argc != 2) {
      err_quit("usage: ls directory_name");
    }
  if((dp = opendir(argv[1])) == NULL){
    err_sys("can't open %s",argv[1]);
  }
  while((dirp = readdir(dp)) != NULL){
    printf("%s\n",dirp->d_name);
  }
  closedir(dp);
  exit(0);
}

我用的是Emacs进行编译的,输入上述代码后,按Ctrl+s保存,然后按Esc+x进行命令输入,我们现在是要编译该程序,因此输入compile回车,然后输入gcc ls1.c回车。如出现如下提示,则编译成功,否则失败。

-*- mode: compilation; default-directory: "/home/cdj/CWorks/" -*-
Compilation started at Wed Dec  4 15:37:15

 gcc ls1.c

Compilation finished at Wed Dec  4 15:37:15


编译成功后,就可以运行该程序了,再次按Esc+x,输入shell,然后输入 ./a.out /dev回车,得到结果如下:

cdj@ubuntu:~/CWorks$ ./a.out /dev
.
..
vsock
dmmidi
midi
vmci
fb0
lp0
parport0
vcsa6
vcs6
...
接着输入书上的./a.out /var/spool/cron等命令。
至此,经过了大半天的折腾,终于跑起来了第一个程序。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
本书是被誉为UNIX编程“圣经”的Advanced Programming in the UNIX Environment一书的第2版。在   本书第1版出版后的十几年中,UNIX行业已经有了巨大的变化,特别是影响UNIX编程接口的有关标准变   化很大。本书在保持了前一版风格的基础上,根据最新的标准对内容进行了修订和增补,反映了最新的技   术发展。书中除了介绍UNIX文件和目录、标准I/O库、系统数据文件和信息、进程环境、进程控制、进程   关系、信号、线程、线程控制、守护进程、各种I/O、进程间通信、网络IPC、伪终端等方面的内容,还在   此基础上介绍了多个应用实例,包括如何创建数据库函数库以及如何与网络打印机通信等。此外,还在附   录中给出了函数原型和部分习题的答案。   本书内容权威,概念清晰,阐述精辟,对于所有层次UNIX/Linux程序员都是一本不可或缺的参考书。 *************************************************************** 请注意: 下载完,评论的同时,请点击评论框上方的五角星(共5个五角星),这样你的被扣的积分就可以返还了。 如果只评论,不点击小五角星,积分不会返还。 一定要先下载完,再评论。如果先评论后下载,或者在下载的过程中评论,积分同样不会返还。 *************************************************************** 更多linux、ARM和C语言资源请参考: http://blog.csdn.net/arkofnoach/archive/2010/10/23/5960560.aspx

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值