南宁网站制作企业,网站报301错误,自己做头像的网站漫画,app制作平台灼灼琉璃夏漫画首先回顾之前所讲#xff0c;在说明“为什么要创建进程”的时候#xff0c;提到过以下两个原因#xff1a; 其中第一个原因很好理解#xff0c;而第二个原因就包含了上节所讲的exec族函数的知识点#xff0c;并且不管是之前的博文还是上节的exec#xff0c;都提到了一点“… 首先回顾之前所讲在说明“为什么要创建进程”的时候提到过以下两个原因 其中第一个原因很好理解而第二个原因就包含了上节所讲的exec族函数的知识点并且不管是之前的博文还是上节的exec都提到了一点“exec族函数通常会和fork一起使用从而实现在原程序运行时创建一个新进程来执行不同的程序的效果” 所以本节来演示如何将fork函数和exec族函数结合起来使用
实现需求
当父进程检测到输入为1时创建子进程把配置文件的字段值修改掉 实现思路
修改配置文件的代码之前就写过模拟 修改配置文件_mjmmm的博客-CSDN博客
代码位于FILE文件夹下的demo6.c
所以我的思路是先将demo6.c再编译生成一个可执行文件
然后使用execl函数来将“修改参数的可执行文件”替换原来fork后的子进程 demo4.c
#include stdio.h
#include stdlib.h
#include unistd.h
#include sys/types.h
#include sys/wait.hint main(void)
{pid_t pid;pid_t fork_return;int cmd 0;printf(please input a cmd number\n);scanf(%d,cmd);if(cmd 1){fork_return fork();if(fork_return 0){wait(NULL); //不要忘记}else{printf(This is the son JC,PID %d\n,getpid());if(execl(/home/mjm/FILE/modify,modify,/home/mjm/FILE/test.config,NULL) -1){printf(execl failed!\n);perror(why);}}}return 0;
} 再次强调fork之后的父进程一定要记得等待子进程退出 并且我们已经知道在execl成功调用后程序会被完全替代成新的而新的程序也就是modify对应的C程序中最后包含了return0当执行到return0的时候就视为子进程正常退出了。 效果演示
先将修改参数的文件编译成可执行文件 然后再运行代码并输入“1 ” 此时再打开config文件
配置文件修改成功 同时如果此时查看相关进程“ps -aux|grep out1” 会发现PID为4112的子进程已经成功退出没有变成僵尸进程