进程常用函数
fork()
- 用于创建进程的函数返回一个整数值
- 返回0表示创建成功,且0为子进程的进程号
- 返回-1表示创建失败
getpid(),getppid()
- getpid()用于返回当前进程的pid(进程标识符)
- getppid()用于返回当前进程的父进程的pid
setpgrp(),getpgrp()
- setpgrp()返回新的组进程标识符
- getpgrp()获得当前组的进程标识符
#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
int main()
{
pid_t pid;
if((pid=fork())==-1) //创建进程
perror("fork"); //返回失败原因
else if(pid==0)
{
printf("child_pid pid=%d\n",getpid()); //返回当前进程的标识符
exit(0);
}
sleep(3);
system("ps");
exit(0);
}
exit(),_exit()
- void exit(int status)
- 用来正常结束当前进程的执行并把status返回给父进程,进程所有的缓冲区数据自动协会,并关闭未关闭的文件。
- void _exit(int status)
- 用来立即结束当前进程,并把参数status返回给父进程,并关闭未关闭的文件。并且向父进程传递SIGCHLD信号给父进程,父进程由wait函数获取子进程当前状态。(_e不会处理I/O缓冲去,若需要更新缓冲去请用exit()).
getresuid(), getresgid()
getresuid, getresgid获取真正的,you'xian和保存的用户或组ID
- 看一下Linux函数库的源码
#define _GNU_SOURCE /* See feature_test_macros(7) */
#include <unistd.h>
int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid);
int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid);
返回值成功返回零,错误返回-1
"RETURN VALUE
On success, zero is returned. On error, -1 is returned, and errno is set appropriately."
网友评论