user-0 提问: unix环境高级编程是不是不适合初学者

回复:
user: user-1
content: 刚刚开始看，确实，从语法上能看懂程序结构，但是代码里面很多函数不理解，各方面的基础都有待加强。

user: user-2
content: 我看这本书的基础是《深入理解计算机系统 》，《c和指针》，《linux命令行大全》和一点点的数据结构只是，我觉得从头看这本书还是可以的。

user: user-3
content: 《linux程序设计》我觉得挺好德的

user: user-4
content: 先看两遍《C语言程序设计》和《鸟哥的Linux私房菜》，对C和Linux有了解了，就可以直接上手看apue了，然后课后的习题得去研究，对加深理解很有帮助；平时用到一些东西时得会去查，一回生二回熟。另外，得懂得用man，比如，查看函数printf的用法，man 2 printf。其实apue这本书并不难只是内容多而已，建议看第3版的英文版，里面加了一些新的东西，书里用的Ubuntu12.04也比较新

user: user-5
content: apue   引用 6 楼 user-18 的回复:apue真的说起来，其实一点都不难，因为书里面的介绍已经非常详细了。它和C primer plus这类书的最主要区别在于它不在是脱离实际的一些简单片段，而是实实在在的应用实例。当然这里很多例子，比起真正的大项目其实也算是很小了。不过对于没有做过项目经验的新手还是会比较吃力点。  当然apue的难点也不在于此，而是里面的unix文化。如果你没有这种文化的代入感，很多地方就想不通。比如unix的流和缓冲的概念，还有线程、信号、进程之间有怎样的联系与区别？其他方面，在各种uinx系统中，大部分人宁愿写命令、写脚本，也不愿在图形界面里点两下。而windows中命令行却很少有人使用，宁可开发各种复杂的图形界面工具点一下，也不会主动写几行脚本。这些文化差异，核心思想如果没有深入体会，就会很难看懂APUE。有时间的话，不仅要多看APUE，还要多接触Unix的文化，去体会一下Unix和以前接触的windows有何不同。  挣钱干活命令行(脚本) ( 包括NT )  C是给perl 做扩展用的

user: user-6
content: 有两个建议： 1，先学习SHELL操作和编程，从使用者的角度多理解一下什么是进程、文件描述符；  2，C有完全标准的那部分函数库，例如 stdio等等，但是有关到操作系统的就完全不一样， 例如windows.h unistd.h等等，有时候，你如果不先学学操作系统，确实无法理解其意义。

user: user-7
content: 在看这本书前可以找个简单的linux  c编程书看看，了解下基本命令，进线程，网络编程，之后看这个书你会受益匪浅！

user: user-8
content: 等你学精了就明白了

user: user-9
content: 看过<unix高级环境编程> 其实没有一点linux c方面的编程沉淀，还真不好看懂

user: user-10
content: 建议去看人民邮电出版社的《c编程实战Linux》，挺好的一本书。

user: user-11
content: 引用 楼主 u014311648 的回复:我刚刚看完《c primer plus》这本书，现在正在看《unix环境高级编程》第一章。我发现unix高级编程好难，里面编程练习使用的函数好多都是我以前没见过的，书里面也没有对函数怎么使用作解释，搞得我没看到没见过的函数就要man或百度，累觉不爱！ 比如第一章1-5  #include<apue.h> #include<sys/wait.h> int main(void) {         char buf[MAXLINE];      /*MAXLINE defined in apue.h*/         pid_t pid;         int status;         printf("%%");/*printf requires %% to print %*/         while(fgets(buf,MAXLINE,stdin)!=NULL)         {                 if(buf[strlen(buf)-1]=='\n')                         buf[strlen(buf)-1]='\0';          //replace newline with null                 if((pid=fork())<0){                         err_sys("fork error");                 }else if(pid==0)                 {                         execlp(buf,buf,(char *)0);                         err_ret("countn,t execute: %s",buf);                         exit(127);                 }                 //parent                 if((pid=waitpid(pid,&status,0))<0)                         err_sys("waitpid error");                 printf("%%");         }         exit(0); }   首先sys/wait.h头文件没见过，然后pid_t不知道是什么类型，fork()execlp()两个函数完全没见过。光是第一章的一个小程序就有这么多看不懂要man的地方，是不是《unix环境高级编程》不适合c菜鸟？？？？？？请看过apue的大神指点迷津。 的确不太适合，你还缺os原理，计算机组成原理，网络基础的一些知识， 不然涉及io的一些函数光看参数你打死都不能理解透彻。 涉及网络的也会云里雾里。 涉及系统，竞争，并发的，资源管理回收的，也会遇到相同的窘境。

user: user-12
content: 《Linux C编程一站式学习》

user: user-13
content: 新手《Linuc环境下C编程》

user: user-14
content: 楼主，你C语言初学者吧，C语言中怎么创建进程和线程，怎么进行socket通信，还有select，再来看这本书吧。

user: user-15
content: 引用 9 楼 luotuo44 的回复:刚看完《c primer plus》就学《UNIX环境高级编程》不是明智之举。假如楼主是在Windows环境下学的，那就更加不应马上看《UNIX环境高级编程》。 应该再深入学一下C语言，学一些Linux的基本命令和基础知识，再学操作系统这门课。这时再来看《UNIX环境高级编程》就觉得它很简单了。我是在linux下学的c语言

user: user-16
content: 一个是C++语言，一个是环境编程，两个关系不大。  环境编程需要对系统比较熟悉。unix环境高级编程 这本书的例子貌似用的是C语言

user: user-17
content: 刚看完《c primer plus》就学《UNIX环境高级编程》不是明智之举。假如楼主是在Windows环境下学的，那就更加不应马上看《UNIX环境高级编程》。 应该再深入学一下C语言，学一些Linux的基本命令和基础知识，再学操作系统这门课。这时再来看《UNIX环境高级编程》就觉得它很简单了。

user: user-0
content: 引用 7 楼 user-18 的回复:很多内容，如果单看代码，其实会觉得很简单，不就是一堆函数组成的，了解每个函数都是干嘛的，一行行读下来，不就知道这个函数是干嘛的了么？但你有没有想过，为什么是先这样执行，再那样执行。有或者这个函数在这里有什么用？为什么要添加这样的功能？比如umask和chmod之间有什么关联等等，你都要好好思考以下。这对我貌似太高极了，我是连鸟哥私房菜都看不下去，只是随便浏览一遍的人

user: user-18
content: 很多内容，如果单看代码，其实会觉得很简单，不就是一堆函数组成的，了解每个函数都是干嘛的，一行行读下来，不就知道这个函数是干嘛的了么？但你有没有想过，为什么是先这样执行，再那样执行。有或者这个函数在这里有什么用？为什么要添加这样的功能？比如umask和chmod之间有什么关联等等，你都要好好思考以下。

user: user-18
content: apue真的说起来，其实一点都不难，因为书里面的介绍已经非常详细了。它和C primer plus这类书的最主要区别在于它不在是脱离实际的一些简单片段，而是实实在在的应用实例。当然这里很多例子，比起真正的大项目其实也算是很小了。不过对于没有做过项目经验的新手还是会比较吃力点。  当然apue的难点也不在于此，而是里面的unix文化。如果你没有这种文化的代入感，很多地方就想不通。比如unix的流和缓冲的概念，还有线程、信号、进程之间有怎样的联系与区别？其他方面，在各种uinx系统中，大部分人宁愿写命令、写脚本，也不愿在图形界面里点两下。而windows中命令行却很少有人使用，宁可开发各种复杂的图形界面工具点一下，也不会主动写几行脚本。这些文化差异，核心思想如果没有深入体会，就会很难看懂APUE。有时间的话，不仅要多看APUE，还要多接触Unix的文化，去体会一下Unix和以前接触的windows有何不同。