如何解决从 Qt 应用程序运行命令行 dot 程序没有输出,这是什么问题?
我有一个应用程序可以生成一个 dependencies.dot
文件,然后我想将其转换为 SVG 图像。
当我从一个简单的应用程序中这样做时:
int main(int argc,char * argv[])
{
system("dot -Tsvg ../BUILD/dependencies.dot > ../BUILD/dependencies.svg");
return 0;
}
效果很好。 SVG 图像存在并且可以正常工作。
当我从 Qt 应用程序运行它时,SVG 文件被创建,但它仍然是空的。
知道什么会阻止 dot
将数据输出到它的 stdout
吗?
为了以防万一,我还尝试使用 cat
通过 stdin
而不是文件名发送输入:
system("cat ../BUILD/dependencies.dot | dot -Tsvg > ../BUILD/dependencies.svg");
这没有任何区别。
同样使用完整路径 (/usr/bin/dot
) 也无济于事。
另一个测试,我尝试使用 popen()
并且第一个 fread()
立即返回 0(即 EOF 的标记)。
它可能不是 Qt,但某些东西正在与 dot
做任何事情的能力相互作用。关于为什么会很棒的任何指示。
也许是一个重要的笔记?我启动我的应用程序。从控制台,所以 stdin
、stdout
和 stderr
都应该按预期工作。我实际上可以看到调试日志出现在那里,其他应用程序似乎按预期工作(例如,我的 Qt 应用程序可以成功运行 make
)。
以下是生成的 SVG 示例(当我不在 Qt 应用程序中运行它时):
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。