提问人:user1078796 提问时间:11/11/2023 更新时间:11/11/2023 访问量:27
写入 stdin,从 glib/gtk Vala 中的 stdout 子进程/进程读取
Write into stdin, read from stdout Subprocess/Process in Glib/GTK Vala
问:
我有一个测试bash / sh脚本。它只是显示一个问题并从控制台读取答案,然后显示输出:
#!/bin/bash
# Ask the user for their name
echo Hello, who am I talking to?
read varname
echo It\'s nice to meet you $varname
我用它来测试更多的编译 sh 脚本,它实际上做同样的事情,但在 Go、Python 和 Vala 中执行。Python 如下所示:
user_input = entry1.get_text()
p = Popen(['/usr/share/bin/bla-bla'], shell=True, stdin=PIPE, stdout=PIPE)
script_output = p.communicate(input=user_input.encode('utf-8'))[0]
if script_output:
bla-bla
else:
Gtk.main_quit()
在 Go 中,它看起来像这样:
user_input, _ := entry1.GetText()
cmd := exec.Command(
"/usr/share/bla-bla",
)
var outb bytes.Buffer
var inb bytes.Buffer
var errb bytes.Buffer
cmd.Stdout = &outb
cmd.Stderr = &errb
cmd.Stdin = &inb
inb.Write([]byte(user_input))
cmd.Run()
if output_line := strings.TrimSuffix(outb.String(), "\n"); output_line != "" {
lab4.SetText(output_line)
} else {
but2.SetSensitive(false)
}
我需要在 Vala GTK/Glib 中获得相同的功能。 我搜索并找到了一些解决方案,但没有一个像我预期的那样有效。主要问题是脚本无法从 stdin 获取数据。 例如,这不起作用:在 vala/glib 中读/写文件管道
请帮帮我。
答: 暂无答案
评论