我有一个C项目,有时我会在下面调用系统命令:
ret_val = system("@ECHO OFF\nFC /A /L /N C:\\tmp\\test.out C:\\bin\\win\\output.txt");
FC命令基本上比较两个文件,并应该返回错误级别。
如果在命令提示符下调用此命令,则只需回显errorlevel
变量即可查看错误。我在这里没问题。
我的问题是我想在我的代码的int变量中包含此错误级别。我不希望在终端上看到它,但同时我想要此变量以分析比较结果。 ret_val
变量始终为0,这不是我需要的功能。
如何在我的代码中获得errorlevel
值?
system
命令仅执行字符串的第一行,因此它执行@echo off
,这不会更改默认返回码,并且您始终会得到0。
当然可以
@echo off && FC /A /L /N C:\\tmp\\test.out C:\\bin\\win\\output.txt
但是在您的情况下,由于您只有一个命令要调用,因此只需不带@echo off
即可调用>
ret_val = system("FC /A /L /N C:\\tmp\\test.out C:\\bin\\win\\output.txt")
system
不需要关闭回声。仅批处理文件执行默认为详细。系统调用处于静默状态(它们不打印发出的命令)。
为什么我的fc命令返回-1,代表什么?