首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自C守护进程的perl系统调用脚本会导致perl脚本崩溃

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

Stack Overflow用户
提问于 2016-05-10 16:12:57
回答 1查看 153关注 0票数 0

我使用的是CentOS 6.5。我有一个perl脚本,在这个脚本中我有系统调用:system("echo 1234 > /tmp/1.txt");这个perl脚本是由守护进程使用execv命令调用的。问题是,当perl脚本到达这个系统调用时,脚本就会崩溃。在查看forked进程时,我看到了它。我试图在perl脚本内部的系统调用中使用eval,但它仍然崩溃。我有几台主机的操作系统完全相同,但这个问题只发生在这台特定的机器上。当手动运行perl脚本时,它工作得很好。守护进程以root用户身份运行,与我的所有其他主机一样。任何帮助都会得到重视。

谢谢你们。

编辑:没有错误消息之类的,如果有一些错误,它会更容易。下面是相关的代码片段:

守护进程(用C编写):

代码语言:javascript
复制
char command[2048];
sprintf(command, "./run.pl ");
char *args[] = {"sudo", "-u", user, "bash","-c",command,NULL};
execv("/usr/bin/sudo",args);

Perl脚本(run.pl):

代码语言:javascript
复制
system("echo 1234 > /tmp/1.txt");
EN

回答 1

Stack Overflow用户

发布于 2016-05-10 23:36:17

所以,我找到了非常奇怪的解决方案,不知道为什么-但它是有效的..在C程序的命令参数中,我将stdout设置为/dev/null。很奇怪,但很管用。

代码语言:javascript
复制
char command[2048];
sprintf(command, "./run.pl > /dev/null");
char *args[] = {"sudo", "-u", user, "bash","-c",command,NULL};
execv("/usr/bin/sudo",args);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37132768

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档