我想在我的C ++代码中使用system()API使用一个命令。
命令是:
comm -23 <(apt-mark showmanual | sort -u) <(gzip -dc /var/log/installer/initial-status.gz | sed -n 's/^Package: //p' | sort -u)
有关该命令的更多详细信息,请使用this link。
当我在Ubuntu 64位计算机上使用终端时,此命令可以正常工作,但是当我在C ++代码中使用系统(&#34;以上命令&#34;) API时,它显示错误,它们在下面:
sh:1:语法错误:&#34;(&#34;意外
我在Google上搜索并找到一个解决方案( C system function causes error 'sh: Syntax error: “(” unexpected ' ),但接受的解决方案以另一种方式执行任务。它不是解决方案,其他解决方案无效。
每个人都解释了如何在shell脚本(.sh文件)中删除此错误,因为所有解决方案都可以在.sh上运行,但它们不适用于system()API。我无法在C ++代码system()API中找到如何删除此错误。
答案 0 :(得分:0)
如前所述,用<(...)
进行进程替换是Bash功能,在香草sh中不可用。因此,您需要显式调用Bash shell:
bash -c "comm -23 <(apt-mark showmanual | sort -u) <(gzip -dc /var/log/installer/initial-status.gz | sed -n 's/^Package: //p' | sort -u)"
答案 1 :(得分:-1)
只需尝试:
system("bash comm -23 <(apt-mark showmanual | sort -u) <(gzip -dc /var/log/installer/initial-status.gz | sed -n 's/^Package: //p' | sort -u)");