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

标签 c# .net process exec fork

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

这是我的第一个 Windows 项目(或者至少,只有 Windows,绝对只有 .NET),我更习惯于为 *nix 做这种事情,我会在其中使用 fork 然后执行 child ,然后等待 child 终止。但我什至不知道从哪里开始寻找做这样的事情。

哦,我很确定我被困在 .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;
    }

如您在这段代码中所见,您还可以执行一些输出重定向、错误重定向....如果您深入研究类(class),我认为您会很快找到所需的内容。

关于C# 相当于 fork()/exec(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17736407/

相关文章:

java - 从 Java 运行可执行文件

c# - 有没有办法在特定时间显示表单

c# - 重定向到操作并传递引用类型

c# - 将数字代码复制到剪贴板并粘贴到 Excel,无需将其格式化为数字

.net - MVC3 部分 View 和谷歌分析

c# - .Net async ForEach() 委托(delegate)抛出任务取消异常

c# - 我可以在 C# 库中有全局预处理器定义吗?

c++ - 扫描进程并在找到特定进程时执行某些操作

java - 对进程执行命令

c# - C# winforms标签中的图像缩小