通过Linux命令行执行时,可执行文件运行正常 - 调用C System()命令时运行时错误

executable runs okay when executed via linux command line - runtime error when called via c++ system() command

本文关键字:System 调用 命令 运行时错误 执行 命令行 Linux 可执行文件 通过 运行      更新时间:2023-10-16

我在Linux中有一个流水模型可执行的模型,该模型在执行后,从许多输入文本文件中读取。当我发现可通过shell执行并执行它(无根)时,一切正常。但是,我正在编写一个需要调用可执行文件的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

即使swat的行为可以说是错误的,您仍然可以在父级程序中使用它:

替换此:

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

与此:

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