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



我使用的是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");

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

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

最新更新