泰州网站建设公司哪个好,网站开发实用技术第2版答案,嘉定区网站建设,公司网站服务费多少钱vfork#xff1a;
所需头文件#xff1a;#include sys/types.h
#include unistd.h
pid_t vfork(void); 功能#xff1a;
vfork() 函数和 fork() 函数一样都是在已有的进程中创建一个新的进程#xff0c;但它们创建的子进程是有区别的。
参数#xff…vfork
所需头文件#include sys/types.h
#include unistd.h
pid_t vfork(void); 功能
vfork() 函数和 fork() 函数一样都是在已有的进程中创建一个新的进程但它们创建的子进程是有区别的。
参数
无
返回值
成功子进程中返回 0父进程中返回子进程 ID。pid_t为无符号整型。
失败返回 -1。
与fork区别
1.fork() 父子进程的执行次序不确定。 vfork()保证子进程先运行,在它调用 exec进程替换 或 exit退出进程之后父进程才可能被调度运行。
2.fork() 子进程拷贝父进程的地址空间子进程是父进程的一个复制品。 vfork()子进程共享父进程的地址空间准确来说在调用 exec进程替换 或 exit退出进程 之前与父进程数据是共享的
总结vfork先运行子进程遇到exit退出运行父进程 fork父子进程争夺先后运行次序 代码
注意退出子进程要用exit函数不然会破坏内存造成data错误
#include stdio.h
#include sys/types.h
#include unistd.h
#include stdlib.hint main()
{pid_t pid;int fd 0;int data 0;while(1){printf(please input data,1 creats child process\n);scanf(%d,data);if(data 1){fd fork();if(fd0){while(1){printf(do net request,pid %d\n,getpid());sleep(2);}}}else { printf(do nothing wait please \n);}}return 0;
}
结果