public void Spawn() { var options = new uv_process_options_t(); options.exit_cb = static_exit; options.file = this.File; var args = new IntPtr[Arguments.Count + 3]; args[0] = Marshal.StringToHGlobalAuto(this.CurrentWorkingDirectory); args[1] = Marshal.StringToHGlobalAuto(this.File); args[args.Length - 1] = IntPtr.Zero; for (int i = 0; i < Arguments.Count; i++) { args[i + 2] = Marshal.StringToHGlobalAuto(Arguments[i]); } options.args = args; var env = new IntPtr[Environment.Count + 1]; env[Environment.Count - 1] = IntPtr.Zero; for (int i = 0; i < Environment.Count; i++) { env[i] = Marshal.StringToHGlobalAuto(Environment[i]); } options.env = env; options.stdout_stream = _stdout; options.stderr_stream = _stderr; Util.CheckError(uv_spawn(_handle, options)); StdOut.ReadStart(); StdErr.ReadStart(); }
internal static extern int uv_spawn(IntPtr loop, IntPtr process, uv_process_options_t options);
internal static extern int uv_spawn(IntPtr loop, IntPtr process, uv_process_options_t options); // uv_loop_t*, uv_process_t*
public static extern int uv_spawn(IntPtr process, uv_process_options_t options);