免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1740 | 回复: 3
打印 上一主题 下一主题

[C] 怎样fork一个子进程? [复制链接]

论坛徽章:
4
每日论坛发贴之星
日期:2015-12-02 06:20:00程序设计版块每日发帖之星
日期:2015-12-12 06:20:00程序设计版块每日发帖之星
日期:2015-12-15 06:20:00程序设计版块每日发帖之星
日期:2015-12-19 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-01-06 22:47 |只看该作者 |倒序浏览
本帖最后由 johnson0418 于 2016-01-06 23:31 编辑

     > cat aa.c
#include <stdio.h>
int main(void)
{

    while(1){
    system("/tmpd/init.SYM");
  
   }
    return 0;
}

怎样fork一个子进程?让子进程执行另一个脚本,如:/tmpd/aaaa.SYM

论坛徽章:
0
2 [报告]
发表于 2016-01-07 02:01 |只看该作者
  1. pid_t pid;
  2. pid=fork();
  3. if(pid==0)
  4.         system("/tmpd/aaaa.SYM");
复制代码
这样差不多就可以了
但是需要考虑的方面有可能父进程结束子进程没有结束的结果,需要进行对子进程释放资源,以免造成浪费资源或者资源耗尽的情况。

论坛徽章:
4
每日论坛发贴之星
日期:2015-12-02 06:20:00程序设计版块每日发帖之星
日期:2015-12-12 06:20:00程序设计版块每日发帖之星
日期:2015-12-15 06:20:00程序设计版块每日发帖之星
日期:2015-12-19 06:20:00
3 [报告]
发表于 2016-01-07 10:37 |只看该作者
回复 2# CrossGrave


     > cat aa.c
#include <stdio.h>
int main(void)
{

    while(1){
    system("/tmpd/init.SYM");
  
   }

   pid_t pid;
   pid=fork();
   if(pid==0)
   {
     system("/tmpd/aaaa.SYM");
    }
    return 0;
}

是这样吗?我有时间 试下。

论坛徽章:
0
4 [报告]
发表于 2016-01-12 10:45 |只看该作者

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <unistd.h>
  4. #include <errno.h>
  5. #include <sys/types.h>

  6. int main(int argc,char *argv[]){
  7.         pid_t id;

  8.         puts("调用vfork函数");
  9.         if((id = vfork()) == -1){
  10.                 perror("call vfork error");
  11.                 exit(1);
  12.         }else if(id == 0){
  13.                 printf("I am child,%d\n",getpid());
  14.                 if( execlp("/tmpd/aaaa.SYM",(char *)0) == -1 ){
  15.                         perror("call execlp error");
  16.                         exit(1);
  17.                 }
  18.                 exit(0);
  19.         }else{
  20.                 wait((int *)NULL);
  21.                 printf("子进程结束,%ld\n",id);
  22.                 exit(0);
  23.         }
  24. }
复制代码
用exec类型函数
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP