进程创建
进程是把该程序运行起来加载到内存,受OS控制,建立PCB,OS把PCB管理好就是把进程管理好。
以fork为例:
fork函数
在Linux中fork函数是非常重要的函数,会创建子进程,原进程是父进程。
子进程返回0,父进程返回子进程id。
进程调用fork,当控制转移到内核中的fork代码后,内核做以下动作:
- 分配新的内存块和内核数据给子进程;
- 将父进程部分数据结构内容拷贝至子进程;
- 添加子进程到系统进程列表当中;
- fork返回,开始调度器调度;
当一个进程调度用fork之后,就是两个二进制代码相同的进程。而且他们都运行到相同的地方。但每次进程都将可以开始他们自己的进程。
int main()
{
pid_t pid;
printf("Before: pid is %d\n",getpid());
if((pid = fork()) == -1)
perror("fork()"),exit(1);
printf("After:pid is %d,fork return %d\n",getpid(),pid);
sleep(1);
return 0;
}