gpt4 book ai didi

c - 获取与 execle 一起使用的 shell 环境

转载 作者:行者123 更新时间:2023-11-30 15:31:59 24 4
gpt4 key购买 nike

我有一个程序需要运行其他程序。从正常终端 session 运行时它工作正常。当使用 initscript 运行时,它无法获得正常的 shell 环境,并且大多数程序都会失败。那么我怎样才能让它与 initscript 一起工作呢?

vixie-cron 似乎使用 execle() 并传递 envp 作为参数。但我很难弄清楚它是如何获取 shell 环境设置的。

以下是当前无法与 initscript 一起正常工作的代码:

pid = fork();
if (pid < 0) {
exit(EXIT_FAILURE);
} else if (pid == 0) {
execl("/bin/sh", "/bin/sh", "-c", cmd, (char *) NULL);
exit(EXIT_FAILURE);
}

编辑:发生了一些奇怪的事情。现在,即使由 init 脚本启动,同一程序也可以正常运行。抱歉,这是个无用的问题。不管怎样,我得到了很好的答案。谢谢您的帮助。

最佳答案

环境变量通过可选的第三个 main() 参数传递给您的程序并由您的程序访问。只需像这样构建您的主要功能:

int main(int argc, char *argv[], char *envp[])

...访问这些变量。

然后您可以将其直接传递给 exec*e() 系列函数。

您可以在 execve(2) 中查看此记录。手册页。

关于c - 获取与 execle 一起使用的 shell 环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24476981/

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