通过linux命令行执行时,可执行文件运行正常 - 通过c ++ system()命令调用时运行时错误

时间:2012-10-24 16:50:21

标签: c++ linux shell

我在linux中有一个分水岭模型可执行文件,在执行时,从许多输入文本文件中读取。当我通过shell找到可执行文件并执行它(没有root)时,一切正常。但是,我正在编写一个需要调用可执行文件的c ++程序,因此我认为我只是使用system()。当我这样做时,模型执行但随后返回与其中一个主输入文本文件关联的“文件结束”运行时错误。我不知道为什么程序在我通过shell手动执行时会执行正常但在通过system()命令执行时返回错误。

我猜不会有人知道问题是什么,但我不知道从哪里开始我的调查。我很感激任何建议。

谢谢!

我的系统命令是:

system("/home/name/SWAT/olentangy/Scenarios/Default/TxtInOut/swat");

我收到的错误是:

forrtl: severe (24): end-of-file during read, unit 23, file /home/name/EO_G/EIGHT/EIGHT/file.cio
Image              PC        Routine            Line        Source             
swat               0821D03F  Unknown               Unknown  Unknown
swat               0821BD35  Unknown               Unknown  Unknown
swat               081D78D1  Unknown               Unknown  Unknown
swat               081ABD66  Unknown               Unknown  Unknown
swat               081AB621  Unknown               Unknown  Unknown
swat               081BC9DF  Unknown               Unknown  Unknown

1 个答案:

答案 0 :(得分:3)

尽管swat的行为可以说是错误的,但您仍然可以在父程序中解决它:

替换它:

system("/home/name/SWAT/olentangy/Scenarios/Default/TxtInOut/swat");

用这个:

system("cd /home/name/SWAT/olentangy/Scenarios/Default/TxtInOut && ./swat");