2

我在 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
4

1 回答 1

3

即使swat它的行为可以说是错误的,你仍然可以在你的父程序中解决它:

替换这个:

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

有了这个:

system("cd /home/name/SWAT/olentangy/Scenarios/Default/TxtInOut && ./swat");
于 2012-10-24T18:04:25.803 回答