我正在使用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");
答案 0 :(得分:1)
所以,我发现了一个非常奇怪的解决方案,不知道为什么 - 但它有效.. 在C程序的命令参数中,我将stdout放到/ dev / null。 奇怪,但有效。
Customer.app