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

原创 2013年12月04日 14:52:58

       开始接触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等命令。
至此,经过了大半天的折腾,终于跑起来了第一个程序。

《UNIX环境高级编程》 —— 书中实例编译、运行

想认真学习《UNIX环境高级编程》的人士可能都想把书中的实例给敲一遍,运行看一下效果。但对于新手来说,可能会有一定的困难,因为例子中用到的头文件和一些函数不知道在哪里,编译可能也会出问题。这边文章就是...
  • wangyuling1234567890
  • wangyuling1234567890
  • 2014年04月02日 22:59
  • 1345

unix环境高级编程第三版源代码编译及使用

估计好多学习unix/linux的程序员都知道有这么一本书,最近笔者也开始膜拜膜拜此书,在编译源代码的时候,遇到了一些问题,现在在这里做下总结,加深自己的印象,或许也有遇到此问题的同仁,可以参考参考!...
  • aboboo5200
  • aboboo5200
  • 2017年03月01日 07:47
  • 2013

Linux - Unix环境高级编程(第三版) 代码编译

Unix环境高级编程(第三版) 代码编译本文地址:http://blog.csdn.net/caroline_wendy时间:2014.10.21. 下载代码:http://www.apuebook....
  • u012515223
  • u012515223
  • 2014年10月02日 23:31
  • 3427

《UNIX环境高级编程》学习经验总结

《UNIX环境高级编程》学习经验总结
  • BlitzSkies
  • BlitzSkies
  • 2015年02月13日 14:37
  • 2648

UNIX环境高级编程(第11章 线程)

线程原语包括pthread_create,pthread_exit,pthread_join,pthread_cancel,pthread_self,pthread_cleanup_push等...
  • lincoln_2012
  • lincoln_2012
  • 2014年11月12日 15:02
  • 334

新书上架--UNIX环境高级编程中文版

序我差不多每次在接受专访当中,或是做技术讲座后的提问时间里,总会被问及这样一个问题:“你想到过UNIX会生存这么长时间吗?”自然,每次的回答都是:没有,我们没想到会是这样。从某种角度说,UNIX系统已...
  • xieqq
  • xieqq
  • 2006年05月10日 08:50
  • 2333

<<UNIX环境高级编程>>随书代码的打开方式

最近在学习>这本书,这本书里有好多包含代码的例子.自己打代码,太费事了,就从网上下,地址是:http://www.apuebook.com/          代码下载了,然后看到书上的第1个例子--...
  • u014804795
  • u014804795
  • 2015年12月08日 22:28
  • 528

unix环境高级编程(文件和目录)

不是根据书实际写了,所有实际的数据均来自于我自己的ubuntu,下面操作系统的内核版本: Linux version 4.4.0-45-generic (buildd@lgw01-19) (gcc ...
  • u011555564
  • u011555564
  • 2016年11月11日 21:55
  • 189

UNIX环境高级编程中头文件配置方法

《APUE》一书中几乎所有实例都用到了“apue.h”头文件,若不预先配置,则不能运行书中源代码实例。以下转自:http://blog.csdn.net/u013660169/article/deta...
  • lcb1992
  • lcb1992
  • 2016年11月15日 22:00
  • 265

Unix环境高级编程 读书笔记一

UNIX 基础知识这一章主要是Unix系统的概论以及一些概念的介绍,主要分为10个小节:    1)登陆    2)文件和目录    3)输入和输出    4)程序和进程    5)ANSI C   ...
  • hawkanzy
  • hawkanzy
  • 2006年11月30日 15:35
  • 417
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:UNIX环境高级编程——第一个程序
举报原因:
原因补充:

(最多只允许输入30个字)