Linux 进程管理基础
1 . fork() 系统调用创建子进程
目标 | 创建进程 |
---|---|
头文件 | #include<unistd.h> |
函数原型 | pid_t result=fork(void) |
返回值 | -1出错 0返回到子进程 pid将子进程ID返回给父进程 |
#include<stdio.h>
#include<unistd.h>
int main()
{
int ret_from_fork,mypid;
mypid=getpid();
printf("Before : my pid is %d\n",mypid);
ret_from_fork=fork();
sleep(1);
printf("After : my pid is %d,fork said %d\n",getpid(),ret_from_fork);
return 0;
}
运行结果:
Before : my pid is 15997
After : my pid is 15997,fork said 15998
After : my pid is 15998,fork said 0
父进程的pid号为15997,子进程pid号15998
2. 父子进程的变量相互不影响
#include<sys/types.h>
#include<unistd.h>
#include<stdio.h>
int glob = 10;
int main(void)
{
int local;
pid_t pid;
local = 8;
if((pid = fork())==0)
{
sleep(2);
}
else if(pid>0)
{
glob++;
local--;
sleep(3);
}
printf("glob=%d, local=%d, mypid=%d\n",glob,local,getpid());
return 0;
}
运行结果
glob=10, local=8, mypid=15826
glob=11, local=7, mypid=15825
父子进程有相同的代码,变量之间相互不影响