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;

 

相关文章

显卡天梯图2024最新版,显卡是电脑进行图形处理的重要设备,...
初始化电脑时出现问题怎么办,可以使用win系统的安装介质,连...
todesk远程开机怎么设置,两台电脑要在同一局域网内,然后需...
油猴谷歌插件怎么安装,可以通过谷歌应用商店进行安装,需要...
虚拟内存这个名词想必很多人都听说过,我们在使用电脑的时候...
win11本地账户怎么改名?win11很多操作都变了样,用户如果想要...