C语言execl函数

友链

#include 
#include 
#include 
#include 
#include 

int main(int argc, char *argv[])
{
    // execl函数
    // int execl(const char *pathname, const char *arg, ...

    //      pathname: 要执行的文件的路径(推荐使用绝对路径)
    //      第二个参数是一个字符串,是第一个参数中指定的可执行文件的参数(可以是多个参数)
    //          第一个参数是程序名称(没啥用)
    //          第二个开始才是程序的参数
    //          最后一个参数需要null结束(用于告知execl参数列表的结束——哨兵)

    if (fork() > 0)
    {
        printf("I'm parent process: pid: %d\n", getpid());
        sleep(1);
    }
    else
    {
        // 当前是子进程
        // execl("/mnt/c/Users/x/Pictures/code/lesson14/2", "2", NULL);

        execl("/bin/ps", "ps", "a", "u", "x", NULL);

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

这个函数是没有返回值的,因为从调用该函数开始,用户区就被调用的二进制程序给替换掉了,已经不再受我们控制
可以看到在程序运行时,下面这段代码并没有执行

printf("I'm child process: %d", getpid());

你可能感兴趣的:(c语言,开发语言,后端)