免费做试卷的网站,福永电子烟网站开发,企业网站建设性能分析,汕头建设银行一、前言
本文介绍unix中的vfork函数#xff0c;vfork函数功能和fork函数类似#xff0c;也是用于创建新的进程#xff0c;只不过调用vfork函数创建的子进程将共享父进程的进程空间#xff0c;且只有当子进程调用exec()或者exit()函数后#xff0c;父进程才会继续运行。 …一、前言
本文介绍unix中的vfork函数vfork函数功能和fork函数类似也是用于创建新的进程只不过调用vfork函数创建的子进程将共享父进程的进程空间且只有当子进程调用exec()或者exit()函数后父进程才会继续运行。
二、vfork
vfork的函数原型如下 #include unistd.h pid_t vfork(void); 参考代码如下
/************************************************************************* File Name: vfork_test.c Author: conbiao Created Time: 2024年09月23日 星期一 20时01分32秒************************************************************************//************************************************************************ HEADER**********************************************************************/
#include stdio.h
#include unistd.h/************************************************************************ MACRO**********************************************************************//************************************************************************ GLOBAL VARIABLE**********************************************************************//************************************************************************ FUNCTION DESCRIPTION**********************************************************************//***********************************************************************
* FUNCTION NAME:***********************************************************************
*
* Summary:
*
* Params:
*
* Return:
*
***********************************************************************//************************************************************************ MAIN**********************************************************************/
int main(int argc, char *argv[])
{int ret 0;int num 10;pid_t pid;printf(%s: start!\n,__func__);if((pid vfork()) 0){printf(%s: fork fail!\n,__func__);}else if(pid 0){printf(%s: This is child process!\n,__func__);num 10;_exit(0);}else{printf(%s: This is parent procee,childs pid is: %d\n,__func__,pid);}printf(%s: num %d\n,__func__,num);return ret;
}运行结果如下
(2-1) 如上图所示子进程修改的num会改变父进程的num因为子进程共享了父进程的进程空间。
参考资料 《UNIX环境高级编程第3版 (史蒂文斯 (W.Richard Stevens) 拉戈 (Stephen A.Rago))(Z-Library)》