Unix环境高级编程学习笔记(五):进程控制
1 getpid函数,getppid函数,得到进程id,得到父进程id
#include<unistd.h> pid_t getpid(void) pid_t getppid(void) uid_t getuid(void)得到实际用户id uid_t geteuid(void)得到有效用户id gid_t getgid(void)得到实际组id gid_t getegid(void)得到有效组id
2 fork函数,当前进程创建新进程
#include<unistd.h> pid_t fork(void)
子进程中返回0,父进程中返回子进程id,出错返回-1
3 当父进程比子进程先终止时,子进程的父进程转化为init进程,保证每个进程都有父进程,
当子进程比父进程先终止的时候,内核为每个终止进程保留了一些信息,父进程可以调用wait,waitpid函数取得这些信息,
如果一个进程已经终止,但是父进程未对其进行善后处理(获取有关信息,释放占有资源),这样的进程称为僵死进程
当一个子进程变为init进程的子进程时,当其终止时,init进程会立刻调用wait,防止其变为僵死进程
4 当子进程终止(正常或异常)时,内核会给父进程发送SIGCHLD信号,默认选项是忽略这个信号
5 wait函数
#include<sys/wait.h> pid_t wait(int *statloc) pid_t waitpid(pid_t pid, int * statlic, int options)
6 exec函数,从main函数开始重新执行新程序
#include<unistd.h>
execl取路径名和参数
execlp在PATH中搜索可执行文件,
execle使用新环境列表
execv取参数列表
7 system函数,非常方便地执行一些操作
#include<stdlib.h> int system(char* cmdstring);
system的原理是调用fork,在子进程中exec一个shell并把cmdstring传进去,主进程调用waitpid对子进程进行善后处理
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。