gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 17:23:19 26 4
gpt4 key购买 nike

我试图理解这个系统调用(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[] 中放入什么。

最佳答案

But in what cases could be useful this system call (execle()), instead of execl()? – Víctor

好吧,如果您希望新进程拥有这个确切的环境而不是父进程。这对于安全敏感的应用程序、登录管理器等创建新 session 的应用程序非常有用。普通应用程序应该继承父环境,因此最好只使用 execl()execlp()。 – 罗德里戈

关于c - execle() 系统调用如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27651083/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com