我正在尝试使用 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);
}