开始接触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环境高级编程——第一个程序相关推荐

  1. UNIX环境高级编程-第一章

    1.UNIX体系结构: 严格意义上说,可将操作系统定义为一种软件,它控制计算机硬件资源,提供程序运行环境.我们通常将这种软件称为内核,因为它相对较小,而且位于环境的核心.图1-1显示了UNIX系统的体 ...

  2. unix环境高级编程 pdf_UNIX系统编程宝典,每一本都值得程序员珍藏

    这几本UNIX系统编程宝典,重印无数次,几代程序员都视如珍宝的几本书,小编在出版圈里快十年了,见证了这本书图灵版.异步社区版的出版.营销,对这套书倾注了一定的感情.今天继续分享给你们,好书总会有人还不 ...

  3. 《UNIX环境高级编程(第3版)》——1.7 出错处理

    本节书摘来自异步社区<UNIX环境高级编程(第3版)>一书中的第1章,第1.7节,作者:[美]W. Richard Stevens , Stephen A.Rago著,更多章节内容可以访问 ...

  4. (三) 一起学 Unix 环境高级编程 (APUE) 之 文件和目录

    . . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...

  5. 《Unix环境高级编程》学习笔记:从点到面

    以前在课堂上学习过<Unix初级教程(第四版)>,对于Unix有了一点了解.由于以后使用的需要,要对它进行比较深入的学习,为此需要阅读不少的书籍,这本<Unix环境高级编程>便 ...

  6. [阅读体会] UNIX环境高级编程

    文章目录 写在开始阅读前 (我会的知识点,在体会里是不提的,并不是书中没有,这里着重于记录我之前不会的,但读过书之后学会的.) 第一章 第二章 2.1 引言 2.2 UNIX标准化 2.2.1 ISO ...

  7. UNIX环境高级编程-环境配置

    背景说明: 学习<UNIX环境高级编程>,里面的示例程序用到了作者写的模块. 把第一个示例代码敲入,结果当头一棒. 咦,怎么编不过去. 网上找资料发现好人不少,问题终于解决. 特此,把我的 ...

  8. Unix环境高级编程 笔记

    Unix环境高级编程(第二版)学习笔记 这是一次较长时间的整理,然而跳跃了一些章节和很多知识点,仍然是很不完善很不全面的. 前言 操作系统某些问题 严格意义上,可将操作系统定义为一种软件,它控制计算机 ...

  9. UNIX环境高级编程-第三版

    Unix环境高级编程-第三版 之前学习了<Linux系统编程>对于常见的概念和函数都有了基础的认知,这里准备通过这本书,深入学习系统API相关内容.笔记内容会有所倾向,不会严格反应书本内容 ...

  10. 《UNIX 环境高级编程》学习笔记—— 标准I/O库

    UNIX环境高级编程--标准I/O库 流和 FILE 对象 标准输入.标准输出和标准错误 缓冲 打开流 读和写流 每次一行 I/O 二进制 I/O 定位流 格式化 I/O 临时文件 内存流 流和 FI ...

最新文章

  1. R语言编写自定义函数自定义ggplot图像中的图例(legend)的位置、图例标题、键值、文本字体大小(title、text、key)、颜色标识的大小、点形状pch的大小
  2. python操作html5日期控件_python、js 时间日期模块time
  3. adb shell root
  4. 读者吐槽:Go 面试总被问到 RPC
  5. JIT的Profile神器JITWatch
  6. Android RecyclerView和ScrollView嵌套使用
  7. odoo10参考系列--ORM API 一(记录集、环境、通用方法和创建模型)
  8. 计算机系统访问控制的功能,访问控制是为了限制访问主体对访问客体的访问权限,从而使计算机系统在合法范围内使用的安全措施,以下关于访问控制的叙述中,()是不正确的 - 信管网...
  9. log4j:warn找不到_修复log4j WARN找不到记录器的附加程序,请正确初始化log4j系统
  10. 使用SAP HANA ODBC驱动程序进行连接
  11. C# Json转list List转json
  12. 华为h12m03装系统_华为H22H-03服务器怎么设置从U盘装系统
  13. o2o电商模式的创业机会有哪些?
  14. 川普上台,VR游戏开发者也来恶搞蹭热度
  15. 四路组相联原理_计算机组成原理中是如何求是几路组相联映像?
  16. 网易云热歌榜评论(爬虫项目)
  17. 系统分析师和系统架构师的区别?
  18. C语言编程>第七周 ⑧ 请编一个函数void fun(int a[M][N],int b[N]),c指向一个M行N列的二维数组,求出二维数组每列中最大元素,并依次放入b所指一维数组中。
  19. 云梦四时歌如何在电脑上玩 云梦四时歌模拟器教程
  20. IA32-Linux地址转换过程

热门文章

  1. perl语言中数组初始化为空和undef的不同
  2. 【Java基础教程】Java的输入输出
  3. excel表格打开是乱码怎么办?
  4. php 生成xls解决乱码,怎么解决php导出excel文件乱码问题
  5. 黑马程序员Java基础视频教程-课程总结文档
  6. VC6兼容性及打开文件崩溃问题解决
  7. Windows Server 2016-WinSer 2016标准版与数据中心版的区别
  8. oracle数据库安装——最详细全步骤详解
  9. java sigar cpu使用率_sigar相关-单个进程占CPU百分比
  10. 苹果“屈服”了?App Store 竟允许第三方支付!