码迷,mamicode.com
首页 > 系统相关 > 详细

Unix环境高级编程学习笔记(五):进程控制

时间:2015-03-21 21:18:56      阅读:237      评论:0      收藏:0      [点我收藏+]

标签:

 

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

 

当父进程比子进程先终止时,子进程的父进程转化为init进程,保证每个进程都有父进程,

当子进程比父进程先终止的时候,内核为每个终止进程保留了一些信息,父进程可以调用waitwaitpid函数取得这些信息,

如果一个进程已经终止,但是父进程未对其进行善后处理(获取有关信息,释放占有资源),这样的进程称为僵死进程

当一个子进程变为init进程的子进程时,当其终止时,init进程会立刻调用wait,防止其变为僵死进程

 

当子进程终止(正常或异常)时,内核会给父进程发送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对子进程进行善后处理

Unix环境高级编程学习笔记(五):进程控制

标签:

原文地址:http://www.cnblogs.com/zhangfann/p/4356115.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!