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 } ~
1 #include "apue.h" 2 int main(void) 3 { 4 printf("hello world from proces ID %d\n",getpid()); 5 exit(0); 6 }
最近的计划
先列下某人的书单
《计算机程序设计艺术》、《算法导论》和《编程珠玑》。
(麻省理工免费课程)计算机科学和编程导论
(麻省理工免费课程)C语言内存管理
用gdb调试程序
Nginx的反向代理机制
《代码大全》《重构》《代码整洁之道》
《C++虚函数表解析》
《C++对象内存存局(上)(下)》
《C/C++返回内部静态成员的陷阱》
《设计模式》《深入浅出设计模式》
C++虚函数表解析
ACE
关于负载均衡的文章
多层分布式系统
服务器备份,双机备份系统
BT和电驴的算法
虚拟化技术
Hadoop
NoSQL数据库搞一个了解下
分布式:
分布式系统:概念和设计
分布式系统:原理和范例
高性能集群计算:结构和系统,第1卷
高性能集群计算:编程和程序,第2卷
建造Linux集群
并行程序设计:使用网络工作站和并行计算机技术和程序
网格计算
《分布式计算(第二版)》
《分布式系统原理与范型》
分布式系统:概念与设计(原书第4版)
打算重读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"就可以了.