0
我有需要运行其他程序的程序。它从正常的终端会话运行时工作正常。当使用initscript运行时,它不会获得正常的shell环境,大多数程序都会失败。那么我怎么才能让它和initscript一起工作呢?获取使用execle的shell环境
vixie-cron似乎使用execle()并将envp作为参数传递。但我很难弄清楚它是如何得到shell env设置的。
这里是一个正确不工作与初始化脚本当前代码:
pid = fork();
if (pid < 0) {
exit(EXIT_FAILURE);
} else if (pid == 0) {
execl("/bin/sh", "/bin/sh", "-c", cmd, (char *) NULL);
exit(EXIT_FAILURE);
}
编辑:一件怪事发生。现在相同的程序即使在初始化脚本启动时也可以正常运行。对不起,这是一个没用的问题。反正我得到了很好的答案。谢谢你的帮助。
什么是不工作?什么是错误?你为什么不在你的代码中报告错误?这似乎是面对意外行为时所做的第一件事情...... –
(shell)环境可能很大程度上取决于运行进程的用户。你检查过了吗? – alk
获取环境变量的常用方法是调用getenv()。这可能是你看不到的。 –