[ Prev ] [ Index ] [ Next ]

进程及进程间通信

Created 星期四 01 三月 2012


进程


#include<unistd.h>
getpid 获取当前进程号

fork 创建进程,调用一次,返回两次,对父进程返回子进程号,对子进程返回0
第八章

子进程用execlp执行新程序文件,而父进程等待子进程终止,用waitpid.

还有vfork,,调用之后马上调用exec,在exec之前子进程在父空间中运行

用户标识


getuid 用户ID,getgid 组ID

原子操作


由多步组成的操作,要么全部执行,要么不执行。
。任何一个要求多于1个
函数调用的操作都不能成为原子操作,因为在两个函数调用之间,内核有可能会临时挂起该进

程序所在地


比如 sar
which sar

防止子进程退出后成为僵死进程


如果不用wait等待子进程返回,则要要处理信号SIGCHLD.
忽略SIGCHLD信号
signal(SIGCHLD,SIG_IGN);




等待信号


sigsuspend( sigmask)设置信号掩码sigmask后挂起进程。
当捕捉到信号处理程序返回时返回,信号掩码被重置为调用该函之前的值。

sigwait(sigmask)要等待在sigmask中的信号,挂起进程,直到出现sigmask中的信号(挂起),返回并删除挂起信号集中该信号。sigwait不改变进程的信号掩码,所以在调用sigwait之前将其阻塞。

网络


IP地址转换

二进制到字符串
inet_ntop
字符串到二进制
inet_pton