fork函数

复刻(英语:fork,又译作派生分支**)是UNIX或类UNIX中的分叉函数,fork函数将运行着的程序分成2个(几乎)完全一样的进程,每个进程都启动一个从代码的同一位置开始执行的线程。这两个进程中的线程继续执行,就像是两个用户同时启动了该应用程序的两个副本。

从一个软件包拷贝了一份源代码然后在其上进行独立的开发,创建不同的软件。这个术语不只意味着版本控制上的分支,同时也意味着开发者社区的分割,是一种形式的分裂

自由及开放源代码软件可以从原有开发团队复刻而不需要事先的许可,这也不会违反任何著作权法律。授权的专有软件(例如Unix)的复刻也时有发生。

fork系统调用用于创建一个新进程,称为子进程,它与进程(称为系统调用fork的进程)同时运行,此进程称为父进程。创建新的子进程后,两个进程将执行fork()系统调用之后的下一条指令。子进程使用相同的pc(程序计数器),相同的CPU寄存器,在父进程中使用的相同打开文件。

它不需要参数并返回一个整数值。下面是fork()返回的不同值。

负值:创建子进程失败。 :返回到新创建的子进程。 正值:返回父母或来电者。该值包含新创建的子进程的进程ID [1] 。

分叉函数

头文件

`#include/*#包含*/``#include/*#包含*/`

fork与vfork的区别

fork()与vfock()都是创建一个进程,那他们有什么区别呢?总结有以下三点区别:

  1. fork ():子进程拷贝父进程的数据段,代码段 vfork ( ):子进程与父进程共享数据段
  2. fork ()父子进程的执行次序不确定 vfork 保证子进程先运行,在调用exec 或exit 之前与父进程数据是共享的,在它调用exec 或exit 之后父进程才可能被调度运行。
  3. vfork ()保证子进程先运行,在她调用exec 或exit 之后父进程才可能被调度运行。如果在 调用这两个函数之前子进程依赖于父进程的进一步动作,则会导致死锁。

https://blog.csdn.net/jianchi88/article/details/6985326

waitpid

waitpid会暂时停止目前进程的执行,直到有信号来到或子进程结束。

#include<sys/types.h>
#include<sys/wait.h>
定义函数 pid_t waitpid(pid_t pid,int * status,int options);

如果执行成功则返回子进程识别码(PID) ,如果有错误发生则返回 返回值-1。失败原因存于 errno 中。

results matching ""

    No results matching ""