APUE学习笔记

 

  1 #include <stdio.h>
  2 #include <stdlib.h>
  3 #include <dirent.h>
  4
  5 int main(int argc,char *argv[])
  6 {
  7     DIR *dp;
  8     struct dirent *dirp;
  9
 10     if(argc != 2)
 11         printf("err argument");
 12
 13     if((dp = opendir(argv[1])) == NULL)
 14         printf("can't open %s",argv[1]);
 15
 16     while((dirp = readdir(dp)) != NULL)
 17         printf("%s\n", dirp->d_name);
 18
 19     closedir(dp);
 20     exit(0);
 21 }

 

 

  1 #include "stdio.h"
  2 #include "apue.h"
  3 
  4 int main(void)
  5 {
  6     int c;
  7     while((c=getc(stdin))!=EOF)
  8         if(putc(c,stdout)==EOF)
  9             printf("output error");
 10 
 11     if(ferror(stdin))
 12         printf("input error");
 13 
 14     exit(0);
 15 }
~          
 
 
wucy@wucy-laptop:~/app$ vim fig1.4.c
 
  1 #include "apue.h"
  2 int main(void)
  3 {
  4     printf("hello world from proces ID %d\n",getpid());
  5     exit(0);
  6 }
 
wucy@wucy-laptop:~/app$ gcc -o fig.1.4 fig1.4.c
wucy@wucy-laptop:~/app$ ./fig.1.4 
hello world from proces ID 1933
wucy@wucy-laptop:~/app$ ./fig.1.4 
hello world from proces ID 1934
wucy@wucy-laptop:~/app$ ./fig.1.4 
hello world from proces ID 1935
wucy@wucy-laptop:~/app$ 
 

Posted by Alex 2011年8月21日 21:49


最近的计划

 

先列下某人的书单

 

《计算机程序设计艺术》、《算法导论》和《编程珠玑》。

 

(麻省理工免费课程)计算机科学和编程导论

 

(麻省理工免费课程)C语言内存管理

用gdb调试程序

Nginx的反向代理机制

《代码大全》《重构》《代码整洁之道》

《C++虚函数表解析》

《C++对象内存存局(上)(下)》

《C/C++返回内部静态成员的陷阱》

《设计模式》《深入浅出设计模式》

C++虚函数表解析

ACE

关于负载均衡的文章

多层分布式系统

服务器备份,双机备份系统

BT和电驴的算法

虚拟化技术

Hadoop

NoSQL数据库搞一个了解下

 

 

分布式:

分布式系统:概念和设计

分布式系统:原理和范例

高性能集群计算:结构和系统,第1卷

高性能集群计算:编程和程序,第2卷

建造Linux集群

并行程序设计:使用网络工作站和并行计算机技术和程序

网格计算

 

《分布式计算(第二版)》

《分布式系统原理与范型》

分布式系统:概念与设计(原书第4版)

 

Posted by Alex 2011年8月21日 16:13


打算重读APUE

 

突然想起来5.1的时候曾经注册了is-programmer. 于是上来看看,发现好多优美的文章  

譬如 http://sd44.is-programmer.com/categories/6366/posts 这个是APUE的学习笔记。

看着这些高亮代码好舒服的感觉,只是我一向都是心动而不行动,泡妞也是如此。

后来又链接到http://sunxiunan.com/?p=1597  标题是谈如何学习一门新的语言。

 

于是乎我决定重读APUE。好好做做读书笔记。然后第一个就是apue.h的问题,于是乎百度头条

如下:

http://hi.baidu.com/%C2%DE%C0%ED%C7%BF/blog/item/cf6953d549c2ee0ea08bb76f.html

 

 

自己抄的程序可能会出现以下错误:
/tmp/ccmKY9AX.o: In function `main':
myday.c:(.text+0x35): undefined reference to `err_quit'
myday.c:(.text+0x6c): undefined reference to `err_sys'
myday.c:(.text+0xd9): undefined reference to `err_quit'
myday.c:(.text+0x106): undefined reference to `err_sys'
myday.c:(.text+0x13e): undefined reference to `err_sys'
myday.c:(.text+0x182): undefined reference to `err_sys'
collect2: ld 返回 1

这是因为没有包含error.c文件导致的。
可以在书上原文#include "unp.h"下面添一句 
                       #include "../lib/error.c"即可。
apue中也一样,总是找到一个叫做error.c的文件然后include 进去即可。(一般都在lib文件夹里)

 

说明:本文合并转载了2篇文章。

 


转载自:http://blog.chinaunix.net/u1/52350/showart_426726.html

最近学习Linux编程,收获真的很多。以前看都是别人或man告诉你某个命令怎么使用,但现在我才领悟到,是程序的源代码决定了全部。

linux要编程,首先需要安装gcc与其它编程工具与库文件。最简单的方法是进入图形界面的添加删除程序,选上开发工具就可以了。


1.APUE2源代码下载:http://www.apuebook.com/src.tar.gz
2.我保存到了/root下.解压缩:tar -xzvf src.tar.gz
3.cd apue.2e进入apue.2e目录,查看README,告诉我们linux系统只要修改Make.defines.linux再make
4.vi Make.defines.linux 修改WKDIR=/root/apue.2e 就是说工作目录为WKDIR=/root/apue.2e
5.修改/root/apue.2e/std/linux.mk把全部的nawk改为awk.因些linux默认没有nawk
6.make

一个需要注意的地方:
apue编程的例子都有关include "apue.h"的代码,其实apue.h并不是系统自带的,它是作者编写的头文件,源代码在附录B中.因此一个方法是.把刚才生成的 /root/apue.2e/include/apue.h直接复制到/usr/include下.
还有像err_sys的函数也在附录B中.同样的方法是在/usr/include新建一个 my_err.h的文件,把Figure B.3. Error functions that output to standard error内容复制进去.这样按例子编程就只需要在行首添加:#include "my_err.h"就可以了.

Posted by Alex 2011年8月21日 14:59