system()命令中的shell进程创建错误

时间:2014-04-01 08:57:36

标签: c++

我的c ++项目中有这段代码:

std::string run_command = "build/executable input.txt";
std::string copy_command = "cp output.txt output_1.txt;";

int status1= system(run_command.c_str());
int status2=system(copy_command.c_str());

它完全在我的电脑上运行,但在我的笔记本电脑中不起作用。两个系统调用都返回-1,这意味着shell进程创建存在问题。您认为这是什么问题?

2 个答案:

答案 0 :(得分:0)

manual报道:

  

错误时返回的值为-1(例如,fork(2)失败),并且   否则返回命令的状态。后者的返回状态是   以wait(2)中指定的格式。因此,命令的退出代码   将是WEXITSTATUS(状态)。如果无法执行/ bin / sh,   退出状态将是退出(127)的命令。

所以,路径应该是正确的。尝试在脚本中添加一些打印调试 也许您指的是笔记本电脑中不存在的资源或库。

答案 1 :(得分:0)

尝试使用ptrace并打印errno(http://man7.org/linux/man-pages/man3/errno.3.html)来查找系统调用失败的原因。这是引导您解决系统调用失败原因的另一个资源http://bytes.com/topic/c/answers/217348-get-system-error-message

P.S。 我对编写c ++系统程序并不完全有信心,但我在C中构建一个shell并且打印errno帮助。我绝对建议使用ptrace以及监视操作系统是否有足够的资源来分配新进程。

相关问题