C# 过程需要按<;输入>;继续。是否可以使用Mono GTK#?

C# 过程需要按<;输入>;继续。是否可以使用Mono GTK#?,c#,linux,shell,process,gtk#,C#,Linux,Shell,Process,Gtk#,我正在尝试使用Mono中的GTK运行“dh#u make”shell命令。问题是:dh_make要求流程开始工作,然后按键。我不知道是否可以使用C。你能帮我吗 正如我所评论的,您需要使用管道与dh_make进程通信。使用Gtk,您可能需要掌握和添加儿童观看和频道观看。您可能需要使用两个通道(即管道),一个用于输入dh_make,另一个用于输出 如果你对什么没有确切的概念,可以考虑阅读一本好书或一本书。Gtk的主循环为您执行多路复用 如果您想了解这些低级Gtk/Glib函数是如何粘在Gtk上的,请

我正在尝试使用Mono中的GTK运行“dh#u make”shell命令。问题是:dh_make要求流程开始工作,然后按键。我不知道是否可以使用C。你能帮我吗

正如我所评论的,您需要使用管道与
dh_make
进程通信。使用Gtk,您可能需要掌握和添加儿童观看和频道观看。您可能需要使用两个通道(即管道),一个用于输入
dh_make
,另一个用于输出

如果你对什么没有确切的概念,可以考虑阅读一本好书或一本书。Gtk的主循环为您执行多路复用


如果您想了解这些低级Gtk/Glib函数是如何粘在Gtk上的,请研究文档并最终查看其源代码(可能使用
grep
查看
Gtk
)。Gtk可能有一些与此相关的测试、演示或示例代码。

是的,完全可以模拟用户在输入过程中按下“回车”键。下面的代码将作为一个单独的进程启动dh_make,将其标准输入引导到创建进程的输出中,并将“enter”作为输入发送到dh_make进程:

System.Diagnostics.Process myProcess = new System.Diagnostics.Process();
myProcess.StartInfo.FileName = "dh_make";
myProcess.StartInfo.Arguments = "(put here any command line arguments you need)";
myProcess.StartInfo.UseShellExecute = false;
myProcess.StartInfo.RedirectStandardInput = true;
myProcess.Start();
System.IO.StreamWriter myStreamWriter = myProcess.StandardInput;

// The following will put an 'Enter' on the first dh_make request for user input
myStreamWriter.WriteLine(" "); 
我目前正在几段代码中使用它,它工作得非常好

希望有帮助

        process.StartInfo.WorkingDirectory = "'/home/"+user+"/pacotes/"+nome_pacote.Text+"-1.0/'";
        process.StartInfo.FileName="dh_make";
        process.StartInfo.Arguments="-n -s";
        process.StartInfo.UseShellExecute = false;
        process.StartInfo.RedirectStandardInput = true;
        process.Start();
        System.IO.StreamWriter myStreamWriter = process.StandardInput;
        myStreamWriter.WriteLine(" ");
        process.WaitForExit();

调试时出现以下错误:奇数字符'>',元素'filename'的属性名'unknown'后应为'='。你知道可能是什么吗?

C#和dh#U make之间的关系是什么?你应该更多地解释你想要实现什么,以及到目前为止你编码了什么。也许你可以在你的GTK程序和dh make之间连接
pipe(2)
,使用GTK将
g#u spawn#u async#u与#u pipes
包装,然后在管道上发送一个
\n
。我试图在MonoDevelop中使用GTK创建一个应用程序,出于学术目的,build.deb包中包含非二进制文件。运行dhu make是生成.deb包的一个步骤。我正在使用Process类来运行这个命令,但是我遇到了一个问题:在dh_make初始化之后,为了让进程开始处理打包,我必须按下终端上的键,我不知道是否可以使用C#。然后,我关于
g_spawn_async_with_pipes
的评论与您相关。你至少需要两个管道(一个用于输入,一个用于输出)来与你的
dh#make
进程进行通信。谢谢你,但是你能给我一些关于如何使用C#进行通信的教程链接吗?我在Google中找不到它。当我跳转到行“myStreamWriter.WriteLine(“”;”)时,会出现此错误。您还需要在末尾包含myProcess.WaitForExit()。