apue
wusoule
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
apue程序清单3-1
这个程序虽小,小中见大嘛。主要是理解重定向符号和管道的概念。(八过,概念的理解是建立在代码的基础上) #include "apue.h" int main(void) { if (lseek(STDIN_FILENO, 0, SEEK_CUR) == -1) printf("cannot seek\n"); else printf("seek原创 2013-04-14 21:09:09 · 892 阅读 · 0 评论 -
apue文件环境
内核用三种数据结构描述一个打开的文件: 1,进程表项 a,文件描述符标志(close_on_exec) b,指向文件表的指针 2,内核为打开的文件维持一张文件表 a,文件状态标志(读,写,添写,同步和非阻塞等) b,当前文件偏移量 c,指向v节点表的指针 3,每个打开的文件都有一个v节点结构。包括了: a,文件所有者原创 2013-04-14 22:52:54 · 862 阅读 · 0 评论 -
apue文件的原子性操作
O_APPEND: 防止程序在“定位文件尾,然后写的时候”出现问题。O_APPEND每次在写之前都会重新定位到文件尾。 pread pwrite 1,无法终端pread的定位和读操作 2,不会更新文件指针 O_CREAT,O_EXCL "判断如果文件不存在,然后在创建“原创 2013-04-15 12:34:41 · 900 阅读 · 0 评论 -
apue进程那些事儿
1,进程的退出 a,exit系列函数。 exit相较于_Exit,_exit的区别是,会在进入内核前关闭所有打开的文件,这会造成数据被刷到磁盘上。 b,atexit函数 函数原型:int atexit(void (*func)(void)); 在进程结束的时候,会把注册的函数执行一遍。执行的顺序和注册的顺序相反的。 2,进程的环境表原创 2013-04-15 16:10:46 · 783 阅读 · 0 评论 -
apue-手贱还是想谢谢信号未决pending
#include #include static void sig_quit(int); int main(void) { sigset_t newmask, oldmask, pendmask; if (signal(SIGQUIT, sig_quit) == SIG_ERR) printf("%m\n"), exit(-1); sigemptyset(&newmask);原创 2013-04-16 16:04:11 · 1001 阅读 · 0 评论 -
apue-setjmp,longjmp
编程模型: #include static jmp_buf jmpbuffer; //最好设置为全局变量 main() { if (setjmp(jmpbuffer) != 0) { ... } f1(); } f1() { f2(); } f2() { if () { longjmp(jmpbuffer, 1); //这里的1会返回到setjmp中 } }原创 2013-04-16 10:23:15 · 1053 阅读 · 0 评论 -
apue-局部变量的错误
#include #define DATAFILE "datafile" FILE *open_data(void) { FILE *fp; char databuf[BUFSIZ]; if ((fp = fopen(DATAFILE), "r")) == NULL) return NULL; if (setvbuf(fp, databuf, _IOLBF, BUFSI原创 2013-04-16 10:26:55 · 920 阅读 · 0 评论 -
apue-信号的恢复和继承
1,signal的恢复exec系列 signal.c #include #include #include void handler(int s) { printf("hello\n"); } int main() { signal(SIGINT, handler); execl("./test", NULL); return 0; } 编译: gcc原创 2013-04-16 13:24:48 · 952 阅读 · 0 评论 -
apue-信号相关概念
1,genercation: 信号产生 2,delivery: 信号递送 3,pending: 处于generation和delivery之间那段时间。处于阻塞阶段。通过sigpending来了解。 4,signal mask: 被屏蔽的信号。处于阻塞状态。通过sigprocmask来了解。原创 2013-04-16 14:07:40 · 987 阅读 · 0 评论 -
apue-alarm和pause函数,关于信号
题记: 这里主要是用alarm和pause来实现sleep函数。会分析其中存在的bug,会很精辟。当然,大牛的恩赐啦~~不然我介些小生怎看到如此的经典呢?! 1实现sleep 1.1一个含有3个BUG的sleep的实现 #include #include static void sig_alrm(int signo) { } unsigned int slee原创 2013-04-16 14:58:13 · 1271 阅读 · 4 评论 -
apue-mmap
mmap:的作用把文件映射到内存里,可以实现的效果是,对此块内存的操作即可以达到对此文件的操作。 因为mmap映射到的内存,是虚拟内存(一般512)的整数倍,可能超过实际的文件长度。 但是,如果你对超过文件长度的那部分进行写的话,这些多余的写是 不会增加到文件里。 看一个实验: 我们传入的文件是1.txt。内容只有10个字节。是1111111111. #include #include原创 2013-04-17 11:58:53 · 901 阅读 · 0 评论 -
apue有点激动的写下这个大神的东东,膜拜您啊!!
#include #include int glob = 6; char buf[] = "a write to stdout\n"; int main() { int var; pid_t pid; var = 88; if (write(STDOUT_FILENO, buf, sizeof(buf)-1) != sizeof(buf)-1) printf("%m\n原创 2013-04-16 11:02:12 · 1026 阅读 · 0 评论
分享