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

system() returns error syntax error: "(" unexpected

本文关键字:错误 意外 语法 返回 system      更新时间:2023-10-16

我想在我的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)

有关该命令的更多详细信息,请使用此链接。

当我在 Ubuntu 64 位机器上使用终端时,此命令可以完美运行,但是当我在 C++ 代码中使用系统("上述命令"(API 时,它会显示错误,如下所示:

sh:1:语法错误:"("意外(

我正在谷歌上搜索并找到一个解决方案(C 系统函数导致错误"sh:语法错误:"("意外">(,但接受的解决方案确实以另一种方式完成任务。这不是一个解决方案,其他解决方案不起作用。

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

如前所述,用 <(...) 进行进程替换是 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)"

试试:

system("bash comm -23 <(apt-mark showmanual | sort -u) <(gzip -dc /var/log/installer/initial-status.gz | sed -n 's/^Package: //p' | sort -u)");