APUE 学习(一)

来源:互联网 发布:电脑打字什么软件培训 编辑:程序博客网 时间:2024/06/06 09:08
1、如果一个进程fork一个子进程,但不要等待子进程终止,也不希望子进程处于僵死状态,直到父进程终止,实现这一技巧是fork两次(子进程fork一次,然后exit)


2、fork和vfork之间的区别

vfork用于创建一个新进程,而该新进程的目的是exec一个新程序;


vfork和fork一样都创建一个子进程,当时它不将父进程的地址空间完全复制到子进程中,因为子进程会立即调用exec(或exit),于是也就不会访问该地址空间。 相反,在子进程exec或exit前,它在父进程的空间中运行。


3、exec


当进程调用一种exec的时,该进程的执行完全替换为新程序,而新程序则从其main函数开始执行,因为调用exec并不创建新进程,所以前后的秦城ID并没有改变。 exec只是用一个全新的程序替换了当前进程的正文、数据、堆和栈。



4、atexit函数


#include <stdlib.h>


int atexit( void (*func)(void) );


登记的进程将有exit自动调用,调用顺序FILO.


5、setjump 和 longjmp函数


非局部goto,这不是由普通C语言goto语句在一个函数体内实施的跳转,而是在栈上跳过若干调用帧,返回到当前函数调用路径上的某一个函数中。


#include <setjmp.h>


int setjmp(jmp_buf env);


int longjmp(jmp_buf env, int val);


6、字符串宏创建符 #


#define doit(name)   pr_limit( #name, name);
阅读(5) | 评论(0) | 转发(0) |
0

上一篇:Buffer Overflow

下一篇:APUE 学习(二) 信号

相关热门文章
  • 论mysql&MongoDB优缺点...
  • 【帝联运维课堂】(第六十期)...
  • java学习----mina篇
  • MSSQL数据库安全
  • 使用SQL Server的OPENROW...
  • linux 常见服务端口
  • 【ROOTFS搭建】busybox的httpd...
  • 什么是shell
  • linux socket的bug??
  • linux的线程是否受到了保护?...
  • IBM DS3400 盘阵怎么查看是单...
  • 启动auditd时,报错如下,怎么...
  • CGSL系统中root密码正确,但无...
  • 在CGSL系统中,如何为不同的用...
  • CGSL系统如何设置交换分区的大...
给主人留下些什么吧!~~
原创粉丝点击