函数名 | 解释 |
---|---|
pid_t getpid(void); | 获取当前进程PID |
pid_t getppid(void); | 获取父进程PID,若无返回0 |
uid_t getuid(void) | 获取当前进程user的ID |
uid_t geteuid(void) | 获取进程有效用户ID(与系统资源使用有关,涉及权限)(effective user id) |
gid_t getgid(void) | 获取用户组ID(group id) |
gid_t getegid(void) | 获取有效用户组ID(与上面uid对应) |
pid_t fork() | fork函数,新建一个子进程,与父进程公用代码段 |
pid_t wait(int *stat_loc) | wait 系统调用会使父进程阻塞直到一个进程结束或者父进程接收到信号,若父进程无子进程则立即返回,成功返回时返回值时子进程PID,否则-1.并设置全局变量errno.stat_loc,时子进程的退出状态,即子进程exit或return的值(详细说明查man手册,而且errno总是没用) |
pid_t waitpid(pid_t pid,int *stat_loc,int options) | 等待指定子进程直到子进程返回pid为正,为等待指定进程。 pid=0,等待当前组ID相同组ID的其他进程。pid=-1,==wait,pid<-1,等待任何一个组ID等于pid绝对值的进程。 options表示父进程的状态:WNOHANG(wnohang):父进程没有子进程时立即返回WUNTACHED(wuntached):子进程结束返回时,子进程退出状态不可得。 |
int execl(const char *path,const char *arg…);//////int execlp(const char *file,const char *arg…) ;///// int execle(const char*path,char *const argv[]);////int execv(const char *path,char *const arg[]);/////int ececvp(const char *file,char *const argv[]) | exec调用保留当前的pid,重新申请进程的数据段,代码段等进程模块arg 是所执行的文件的参数,必需以空指针结尾 ,(区别貌似不大,也没注意过,知道的可以在下面评论 ) |
int kill(pid_t pid,int sig) | 杀死pid的进程pid=0 ,sig信号发给同组所有进程pid=-1,发给所有可以发给的进程。 pid<-1,发给所有用户组中ID是-pid的进程。 sig=0,什么也不发生,一般都是宏。 返回值 0 success -1 error 同时errno被被设置 |
常用头文件有
<unistd.h>
<errno.h>
<sys/wait.h>
<sys/types.h>
基本的进程函数都列举在这里了。
编译时候加-lm连接数学函数库