execle()系统调用如何工作?

时间:2014-12-25 22:05:37

标签: c operating-system system-calls

我正在尝试理解这个系统调用(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 []。

1 个答案:

答案 0 :(得分:0)

  

但在什么情况下可能有用呢   系统调用(execle()),而不是execl()?                        - 维克托

好吧,如果你希望新进程拥有这个确切的环境而不是父进程。这在创建新会话的安全敏感应用程序,登录管理器等中很有用。普通应用程序应该继承父环境,因此最好使用execl()execlp()。                      - 罗德里戈