C#相当于fork()/ exec()

我正在开发一个需要调用外部程序的程序,但需要等待它执行。 这是在C#中完成的(我是全新的,但在C ++,Qt和C方面有很多经验)并且CreateProcess似乎不是我正在寻找的(启动过程,然后忘记它,我不需要)。

这是我的第一个Windows项目之一(或者至少,只有Windows,当然只有.NET),而且我更习惯于为* nix做这类事情,我会在子项中使用fork然后执行exec,然后等孩子终止。 但我不知道在哪里开始寻找这样的事情。

哦,我很确定我被困在.NET中因为我需要读取访问注册表才能完成这个项目而.NET的注册表访问绝对是惊人的(在我看来,我没有任何东西可以将它与)。

谢谢。

您可以使用Process类。 它允许您指定有关如何执行它的一些选项,还提供了一种在执行下一个语句之前等待进程退出的方法。

看看这个链接(msdn参考): http : //msdn.microsoft.com/fr-fr/library/system.diagnostics.process.aspx

基本上你可以做的是:

  Process p; // some code to initialize it, like p = startProcessWithoutOutput(path, args, true); p.WaitForExit(); 

初始化进程的一个例子(这只是我曾在某处使用的一些代码):

  private Process startProcessWithOutput(string command, string args, bool showWindow) { Process p = new Process(); p.StartInfo = new ProcessStartInfo(command, args); p.StartInfo.RedirectStandardOutput = false; p.StartInfo.RedirectStandardError = true; p.StartInfo.UseShellExecute = false; p.StartInfo.CreateNoWindow = !showWindow; p.ErrorDataReceived += (s, a) => addLogLine(a.Data); p.Start(); p.BeginErrorReadLine(); return p; } 

正如你在这段代码中看到的,你也可以做一些输出重定向,错误重定向….如果你在课堂上挖掘我认为你会很快找到你需要的东西。

 var p = System.Diagnostics.Process.Start("notepad"); p.WaitForExit(); 

您可以使用Process类来启动外部进程。 它会让你开始任意程序

http://msdn.microsoft.com/en-us/library/system.diagnostics.process.aspx