我正在尝试理解这个系统调用(execle()),但我不知道它是如何工作的。我不知道如何使用char * envp [],我们必须将其作为参数传递。我试过这个,但它不起作用:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(void)
{
int pid;
int* status;
char* envp[] = {"/usr/lib", 0};
//Child process
if((pid=fork())==0)
{
printf("I'm the child and I'm going to list...\n");
execle("/bin/ls", "ls", "-l", "-a", 0, envp);
printf("Error\n");
}
//Parent process
else
{
printf("I'm the parent...\n");
wait(status);
}
printf("Child status: %d\n", *status);
}
我不知道应该把什么放在char * envp []。
答案 0 :(得分:0)
但在什么情况下可能有用呢 系统调用(execle()),而不是execl()? - 维克托
好吧,如果你希望新进程拥有这个确切的环境而不是父进程。这在创建新会话的安全敏感应用程序,登录管理器等中很有用。普通应用程序应该继承父环境,因此最好使用execl()
或execlp()
。
- 罗德里戈