微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

exec函数族的应用

#include <unistd.h>

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 <stdio.h>
#include <sys/types.h>
#include <unistd.h>

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;

 

原文地址:https://www.jb51.cc/wenti/3282902.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐