exec函数族

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
前六个都是标准C库的函数,最后一个是Linux的系统函数。最常用的是前两个。

execl

/*
#include <unistd.h>

int execl(const char *path, const char *arg, ...);
-参数:
    -path:需要指定的执行文件的路径名称(推荐绝对路径)
    - arg:是执行可执行文件所需要的参数列表
        第一个参数一般没有什么作用,为了方便,一般写的是执行的程序的名称
        自从第二个参数开始往后,就是程序执行所需要的的参数列表。
        参数最后需要以NULL结束(哨兵)

返回值:
    只有失败才有返回值 且设置errno
    失败: -1

*/

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

int main(){

    //创建一个子进程在子进程中执行exec函数族中的函数
    pid_t pid = fork();

    if(pid > 0){
        printf("parent: pid : %d \n", getpid());
        sleep(1);

    }else if(pid == 0){

        //execl("/bin/ps", "ps", "aux", NULL);
        execl("hello", "hello", NULL);

        printf("child, pid : %d \n", getpid());
    }

    for(int i=0; i<5; i++){
        printf("i = %d pid = %d \n", i, getpid());
    }

    return 0;
}

exexlp

/*
#include <unistd.h>
int execlp(const char *file, const char *arg, ...);
-会到环境变量中查找可执行文件,如果找到就执行,找不到就执行不成功

int execv(const char *path, char *const argv[]);
argv是需要的参数的一个字符串数组
char *arg[] = {"ps", "aux", NULL};
execv("/bin/ps", argv);
I


*/

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

int main(){

    pid_t pid = fork();

    if(pid > 0){
        printf("Parent: pid : %d \n", getpid());

    }else{
        //execlp("ps", "ps", "aux", NULL);


        printf("Child: pid : %d \n", getpid());
    }

    for(int i=0; i<3; i++){
        printf("i = %d, pid : %d \n", i, getpid());
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值