【发布时间】:2013-02-10 17:18:46
【问题描述】:
我正在尝试使用 vala 使用带有 spawn_command_line_sync() 的 GLib 启动外部应用程序。 根据文档 (http://valadoc.org/#!api=glib-2.0/GLib.Process.spawn_sync),您可以传递一个字符串来存储外部应用程序的输出。
虽然这在启动打印几行的脚本时可以正常工作,但我需要调用一个程序来打印二进制文件的内容。 (例如“cat /usr/bin/apt-get”)
有什么方法可以接收外部程序的输出,而不是字符串,而是 DataStream 或类似的输出?
我打算将外部程序的输出写入文件,因此只需调用“cat /usr/bin/apt-get > outputfile”将是一种替代方法(不是很好),但它不是似乎有效。
无论如何,我希望它获得某种输出流。 我将不胜感激。
我正在使用的代码:
using GLib;
static void main(string[] args) {
string execute = "cat /usr/bin/apt-get";
string output = "out";
try {
GLib.Process.spawn_command_line_sync(execute, out output);
} catch (SpawnError e) {
stderr.printf("spawn error!");
stderr.printf(e.message);
}
stdout.printf("Output: %s\n", output);
}
【问题讨论】: