#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 举报,一经查实,本站将立刻删除。