Linux学习笔记(8)-exec族函数

 

  昨天学习了Linux下的进程创建,创建一个进程的方法极为简单,只需要调用fork函数就可以创建出一个进程,但是……

  介绍fork()函数的时候提到,在创建进程后,子进程与父进程有相同的代码空间,执行的是和父进程完全一样的代码……

  那这样的话,我辛辛苦苦创建一个进程,还有什么意义?

  辛辛苦苦的养大了一个儿子,难道就是为了让他走老子的老路?

  带着满心的疑惑,我又进行了下一章的学习,突然恍然大悟,原来还有一个叫exec族函数的东西,专门就是用来给新创建的进程分配工作的。

  

  调用exec族函数并不创建进程,因此前后进程的ID并无改变,exec只是用一个全新的程序替换当前进程的执行程序。

  exec族函数有6个不同的exec函数。现在我就用fork来创建一个子进程,并且用exec族函数来给他分配一个新的工作。

  子进程的程序:

#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>

int main(void)
{
    printf("我是儿子,我的名字叫%d,我爹叫%d.我现在成为了一个科学家!\n",getpid(),getppid());

    return 0;
}

  父进程的程序:

  

#include<unistd.h>
#include<stdio.h>
#include<stdlib.h>
#include<errno.h>

int main(void)
{
    pid_t pid;

    pid = fork();
    if(pid < 0)
    {
        printf("媳妇难缠,儿子死了,死亡代码%d.\n",errno);
    }
    else if(pid == 0)
    {
//      printf("儿子出生了!\n");
        execle("pro_sun",NULL,NULL,NULL);
    }
    else
    {
        printf("我是爹,我的名字叫%d,我的儿子叫%d.\n",getpid(),pid);
    }

    wait(NULL);
    return 0;
}

  编译,执行,结果如下:

  

  完美运行!!!

  撸一把,睡觉~

  

 

转载于:https://www.cnblogs.com/han-bing/p/6075857.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值