#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;
}