先贴一段代码,开个大坑。
关于进程的创建,在Linux系统底下使用fork()函数。
#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
int main(void)
{
pid_t Pid = 0;
Pid = fork(); //调用完fork()之后,就会创建一个子进程,子进程完全复制父进程的堆栈段和数据段的内容
//子进程与父进程共用代码段,因此子进程接下来执行的操作跟父进程完全一样。
if ((Pid == EAGAIN) || (Pid == ENOMEM))
{
printf("Create child process failed!\n");
}
else if (Pid == 0) //由于子进程与父进程共用代码段, fork()函数返回了两次
//在父进程中返回子进程的ID, 在子进程中返回0, 可以用它来区分父子进程
{
printf("This is child process! Pid=%d \n",getpid());
}
else
{
printf("This is father process! Pid=%d \n",getpid());
}
sleep(1);
return 0;
}
获得进程相关信息的接口
getpid(); //获得进程ID
getppid(); //获得父进程ID
getuid(); //获得用户ID
geteuid(); //得到有效用户ID
getgid(); //获得组ID
getegid(); //获得有效组ID