c# .net process exec fork

C#equivalente a fork()/exec()



.net process (3)

Puede usar la clase Process para iniciar procesos externos. Le permitirá iniciar programas arbitrarios

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

Estoy desarrollando un programa que necesita llamar a un programa externo, pero necesita esperar a que se ejecute. Esto se está haciendo en C # (para el cual soy nuevo, pero tengo mucha experiencia en C ++, Qt y C) y CreateProcess no parece ser lo que estoy buscando (inicia el proceso, luego lo olvida, No necesito).

Este es uno de mis primeros proyectos de Windows (o al menos, solo Windows y definitivamente solo .NET) y estoy mucho más acostumbrado a hacer este tipo de cosas para * nix donde usaría fork y luego ejecutó en el niño, luego espere a que el niño termine. Pero no tengo ni idea de dónde empezar a buscar hacer algo como esto.

Ah, y estoy bastante seguro de que estoy atrapado en .NET porque necesito acceso de lectura al registro para completar este proyecto y el acceso al registro de .NET es absolutamente increíble (en mi opinión, no tengo nada para compararlo con )

Gracias.


Puedes usar la clase Process . Le permite especificar algunas opciones sobre cómo desea ejecutarlo, y también proporciona un método que espera que el proceso se cierre antes de ejecutar la siguiente instrucción.

mira este enlace (la referencia msdn): http://msdn.microsoft.com/fr-fr/library/system.diagnostics.process.aspx

Básicamente lo que puedes hacer es:

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

un ejemplo de inicialización del proceso (es solo un código que utilicé alguna vez en algún lugar):

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; }

como puede ver en este código, también puede hacer una redirección de salida, redirección de error ... Si busca en la clase, creo que encontrará rápidamente lo que necesita.


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