我使用yq将YAML文档转换为JSON,以便在C程序中使用。在我的程序中,我使用命令
将文件转换为JSONsystem("yq ea '[.]' -o=json .cache/BT_nginx-ingress.yaml > .cache/package.json")
但是这会导致错误:
错误:write/dev/stdout: permission denied
在我的程序中,我已经在system()
命令中多次使用重定向,但是在这个特定的实例中它失败了。
我可以在终端正常运行命令,而不需要root。我在PopOS上使用bash,所以我也在上面的system()调用中添加了bash -c
,但是这样也会失败。
system("echo foo > .cache/package.json")
作品!我已经设法通过将yq_linux_amd64二进制文件与C程序本身一起添加来解决此问题,而不是使用来自snap的yq包。它现在工作得很好,可以重定向输出,没有任何问题。