来自C守护程序的perl系统调用脚本导致perl脚本崩溃

时间:2016-05-10 08:12:57

标签: c perl system daemon

我正在使用CentOS 6.5。 我有一个perl脚本,在脚本中我有系统调用: system("echo 1234 > /tmp/1.txt"); perl脚本由守护程序使用execv命令调用。 问题是,当perl脚本到达此系统调用时,脚本崩溃。当看到分叉的过程时,我看到了它。 我试图在perl脚本中的系统调用上使用eval,但它仍然崩溃。 我几乎没有具有相同操作系统的主机,但这个问题只发生在这台特定的机器上。 手动运行perl脚本时,它可以正常工作。 守护程序使用root运行,与我拥有的所有其他主机相同。 任何帮助都会得到满足。

谢谢你们。

编辑: 没有错误消息或者如果有的话,如果有一些错误则更容易。 这里的任何方式都是代码的相关部分:

守护进程(在C中写道):

char command[2048];
sprintf(command, "./run.pl ");
char *args[] = {"sudo", "-u", user, "bash","-c",command,NULL};
execv("/usr/bin/sudo",args);

Perl脚本(run.pl):

system("echo 1234 > /tmp/1.txt");

1 个答案:

答案 0 :(得分:1)

所以,我发现了一个非常奇怪的解决方案,不知道为什么 - 但它有效.. 在C程序的命令参数中,我将stdout放到/ dev / null。 奇怪,但有效。

Customer.app