• exec函数族的应用


    #include

    extern char **environ;

    int execl(const char *pathname, const char *arg, ...

              /* (char  *) NULL */);

    int execlp(const char *file, const char *arg, ...

               /* (char  *) NULL */);

    int execle(const char *pathname, const char *arg, ...

               /*, (char *) NULL, char *const envp[] */);

    int execv(const char *pathname, char *const argv[]);

    int execvp(const char *file, char *const argv[]);

    int execvpe(const char *file, char *const argv[],

                char *const envp[]);

    例子:代码如下

    char *argv1[] = {"./hello", NULL};

    char *argv2[] = {"ls", "-l", NULL};

    //if (0 > execl("./hello", "./hello", NULL))

    //if (0 > execl("/usr/bin/ls", "ls", "-l", NULL))

    //if (0 > execlp("ls", "ls", "-l", NULL))

    //if (0 > execv("./hello", argv1))

    if (0 > execvp("ls", argv2))

    {

    perror("exec");

    return -1;

    }

    //printf("nihao!\n");

    -----------------------------------------------------------------------------------------------------

    代码2:

    #include
    #include
    #include

    int main(int argc, char *argv[])

        pid_t pid = fork();
        if (pid < 0)
        {
            perror("fork");
            return -1;
        }
        if (0 == pid) //child
        {
            char *argv1[] = {"./hello", NULL};
            char *argv2[] = {"ls", "-l", NULL};
            //if (0 > execl("./hello", "./hello", NULL))
            //if (0 > execl("/usr/bin/ls", "ls", "-l", NULL))
            //if (0 > execlp("ls", "ls", "-l", NULL))
            //if (0 > execv("./hello", argv1))
            if (0 > execvp("ls", argv2))
            {
                perror("exec");
                return -1;
            }
            //printf("nihao!\n");
        }
        else
        {
            while (1)
            {
                printf("hello world!\n");
                sleep(1);
            }
        }


        return 0;

     

  • 相关阅读:
    nodejs+vue市民健身中心网上平台-计算机毕业设计
    人们越来越担心MogaFX外汇储备的减少
    Golang Context 的使用指南
    idea springboot 自定义注释无效
    Lombok依赖
    vSphere ESXI主机网络分析工具
    Jmeter进阶使用指南-使用参数化
    【Mongodb数据库】的介绍和安装(windows下和ubuntu16.04下安装及启动)
    LeetCode 0491. 递增子序列
    Hive中常用SerDe介绍
  • 原文地址:https://blog.csdn.net/qq_63626307/article/details/126506921