进程控制——fork()

7 篇文章 0 订阅

fork() create new processes.

exec() initiate new programs.

exit() handle termination

wait() and waitpid() handle waiting for termination.

fork()创建一个新的子进程,创建时,OS把当前程序复制一份给了新进程,程序指针指向了新程序起点,两个进程独立地继续运行。父进程与子进程不共享内存空间。

子进程和父进程这两个进程的父进程ID不同,子进程的父进程ID就是它的父进程,而父进程的父进程ID并没有变化。

fork()的两种用途:

一个进程给自己做一个复制,以便这个进程和它的子进程能在同一时间执行程序的不同部分,普遍用于网络服务器;

一个进程欲执行另一个程序,如shell。这种情况下,子进程从fork()返回后立刻执行了exec()

fork() 被调用一次但返回2次,  在fork函数执行完毕后,如果创建新进程成功,则出现两个进程,一个是子进程,一个是父进程。在子进程中,fork函数返回0,在父进程中,fork返回新创建子进程的进程ID。我们可以通过fork返回的值来判断当前进程是子进程还是父进程。

#include<unistd.h>
#include<stdio.h>
int main(){
pid_t fpid;
fpid=fork();
if(fpid<0)
printf("error in fork");
else if(fpid==0){
  printf("i am child,my process id is pid %d\n",getpid());

} 
else
{
   printf("i am parent,my process id is pid %d\n",getpid());
}


}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值