system()返回错误语法错误:“(”意外

问题描述 投票:0回答:2

我想在我的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 ++代码中使用系统(“上面的命令”)API时,它显示错误,它们在下面:

sh:1:语法错误:“(”意外

我在Google上搜索并找到一个解决方案(C system function causes error 'sh: Syntax error: “(” unexpected '),但是接受的解决方案以另一种方式完成任务。这不是解决方案,其他解决方案无效。

每个人都解释了如何在shell脚本(.sh文件)中删除此错误,因为所有解决方案都可以在.sh上运行,但它们不适用于system()API。我无法在C ++代码system()API中找到如何删除此错误。

c++ linux bash shell system
2个回答
0
投票

如上所述,用<(...)替换进程是一种Bash功能,在vanilla 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
投票

试一试:

system("bash comm -23 <(apt-mark showmanual | sort -u) <(gzip -dc /var/log/installer/initial-status.gz | sed -n 's/^Package: //p' | sort -u)");
© www.soinside.com 2019 - 2024. All rights reserved.