重定向C system()输出仅在使用yq时失败



我使用yq将YAML文档转换为JSON,以便在C程序中使用。在我的程序中,我使用命令

将文件转换为JSON
system("yq ea '[.]' -o=json .cache/BT_nginx-ingress.yaml > .cache/package.json")

但是这会导致错误:

错误:write/dev/stdout: permission denied

在我的程序中,我已经在system()命令中多次使用重定向,但是在这个特定的实例中它失败了。

我可以在终端正常运行命令,而不需要root。我在PopOS上使用bash,所以我也在上面的system()调用中添加了bash -c,但是这样也会失败。

有谁能帮我一下吗?谢谢!编辑:关于我的配置的更多细节。当前工作目录与程序的位置相同,即.cache上面的一个目录。工作目录永远不会更改。我是。cache和里面文件的所有者。权限对我和组来说是r/w。我正在运行这个过程,但不是用sudo。system("echo foo > .cache/package.json")作品!

我已经设法通过将yq_linux_amd64二进制文件与C程序本身一起添加来解决此问题,而不是使用来自snap的yq包。它现在工作得很好,可以重定向输出,没有任何问题。

最新更新