我发现使用diff inside system()很难重定向两个文件中的差异,尝试了所有的排列和组合,但失败了。
status = system("/bin/sh -c /usr/bin/diff old_ap.json ap_afterTtime.json |tr -d '<> ---,'> diffoutput");
错误:
/usr/bin/差异:"/usr/bin/diff "后缺少操作数
/usr/bin/差异:有关详细信息,请尝试使用'/usr/bin/diff--help '。
尝试使用两个输入文件的绝对路径,但输出文件仍然为空。虽然每次写入输出文件时都为空。我尝试读取两个Json文件,发现写入和存储在一个文件中的数据存在差异。
1条答案
按热度按时间6gpjuf901#
我试过这个程序,重现问题:
我得到了错误
missing operand after '/usr/bin/diff'
,就像报告的那样。问题是,当您使用
sh -c
时,-c
后面的命令必须是单个参数。我认为这里不需要
-c
,因此我将system
调用更改为错误消失了,创建了一个文件
diffoutput
。为了完整起见,我还尝试了
这保留了
-c
,但是使用了额外的引号,这样-c
就可以将整个命令看作一个参数。您说删除
sh -c
没有帮助,所以您的环境一定有什么不同。您运行的是什么操作系统?