c语言fork函数 c语言fork函数pid==0

fork函数是什么?Forkc语言fork函数:创建一个和当前进程映像一样c语言fork函数的进程可以通过fork( )系统调用:
【c语言fork函数 c语言fork函数pid==0】#include sys/types.h
#include unistd.h
pid_t fork(void);
成功调用fork( )会创建一个新的进程c语言fork函数,它几乎与调用fork( )的进程一模一样,这两个进程都会继续运行 。在子进程中 , 成功的fork( )调用会返回0 。在父进程中fork( )返回子进程的pid 。如果出现错误,fork( )返回一个负值 。
最常见的fork( )用法是创建一个新的进程 , 然后使用exec( )载入二进制映像 , 替换当前进程的映像 。这种情况下,派生(fork)了新的进程,而这个子进程会执行一个新的二进制可执行文件的映像 。这种“派生加执行”的方式是很常见的 。
在早期的Unix系统中,创建进程比较原始 。当调用fork时,内核会把所有的内部数据结构复制一份 , 复制进程的页表项,然后把父进程的地址空间中的内容逐页的复制到子进程的地址空间中 。但从内核角度来说,逐页的复制方式是十分耗时的 。现代的Unix系统采取了更多的优化,例如Linux,采用了写时复制的方法,而不是对父进程空间进程整体复制 。
c语言调用函数while((p1=fork())==-1)是什么意思c语言调用函数while((p1=fork())==-1)的意思是:
fork函数是在当前进程中新建立一个子进程 , 如果这个创建子进程失败,那么返回-1,这个实际是把创建进程的返回值和-1比较看看是否创建失败 。
因为是写在while语句里,那么当创建失败之后 , 如果在while里面没有break或者跳出,当while执行体执行结束后又会执行(p1=fork())==-1 , 等于不断重复创建子进程一直到创建成功为止 。
注意这里会返回两次,因为父进程创建子进程的时候复制了父进程的地址空间 , 那么父子进程地址空间的语句执行都在等待fork返回的那句话里 。
所以返回两次是父进程返回一个,返回的是子进程的ID,子进程返回一次,返回的是0.
那么我们根据不同的返回值就可以分别写出我们想要的父子进程的逻辑 。
C语言fork函数函数签名: pid_t fork(void);
子进程中返回0,父进程中返回子进程ID,出错返回-1
函数签名:
pid_t waitpid(pid_t pid,int* stat_loc,int options);
函数签名:
pid_t getpid(void);
pid_t getppid(void); //用于获取父(parent)进程的pid
函数签名:
void eixt(int status);
示例1 创建一个这样的进程
创建一个如下的
c语言fork函数的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语言fork函数pid==0、c语言fork函数的信息别忘了在本站进行查找喔 。

    推荐阅读