public static int Main(string[] args) { try { Hashtable props = new Hashtable (); props ["port"] = 0; props ["name"] = "__internal_tcp"; ChannelServices.RegisterChannel (new TcpChannel (props, null, null)); string sref = Console.In.ReadLine (); byte[] data = Convert.FromBase64String (sref); MemoryStream ms = new MemoryStream (data); BinaryFormatter bf = new BinaryFormatter (); IProcessHostController pc = (IProcessHostController) bf.Deserialize (ms); ProcessHost rp = new ProcessHost (pc); pc.RegisterHost (rp); try { pc.WaitForExit (); } catch { } rp.Dispose (); } catch (Exception ex) { } return 0; }
public static int Main(string[] args) { string tmpFile = null; TextReader input = null; try { // The first parameter is the task id // The second parameter is the temp file that contains the data // If not provided, data is read from the standard input if (args.Length > 1) { tmpFile = args [1]; input = new StreamReader(tmpFile); } else { input = Console.In; } string sref = input.ReadLine(); string pidToWatch = input.ReadLine(); if (tmpFile != null) { try { input.Close(); File.Delete(tmpFile); } catch { } } WatchParentProcess(int.Parse(pidToWatch)); string unixPath = RegisterRemotingChannel(); byte[] data = Convert.FromBase64String(sref); MemoryStream ms = new MemoryStream(data); BinaryFormatter bf = new BinaryFormatter(); IProcessHostController pc = (IProcessHostController)bf.Deserialize(ms); LoggingService.AddLogger(new LocalLogger(pc.GetLogger(), args[0])); ProcessHost rp = new ProcessHost(pc); pc.RegisterHost(rp); try { pc.WaitForExit(); } catch { } try { rp.Dispose(); } catch { } if (unixPath != null) { File.Delete(unixPath); } } catch (Exception ex) { Console.WriteLine(ex); } return(0); }
public static int Main (string[] args) { string tmpFile = null; TextReader input = null; try { // The first parameter is the task id // The second parameter is the temp file that contains the data // If not provided, data is read from the standard input if (args.Length > 1) { tmpFile = args [1]; input = new StreamReader (tmpFile); } else input = Console.In; string sref = input.ReadLine (); string pidToWatch = input.ReadLine (); if (tmpFile != null) { try { input.Close (); File.Delete (tmpFile); } catch { } } WatchParentProcess (int.Parse (pidToWatch)); string unixPath = RegisterRemotingChannel (); byte[] data = Convert.FromBase64String (sref); MemoryStream ms = new MemoryStream (data); BinaryFormatter bf = new BinaryFormatter (); IProcessHostController pc = (IProcessHostController) bf.Deserialize (ms); LoggingService.AddLogger (new LocalLogger (pc.GetLogger (), args[0])); ProcessHost rp = new ProcessHost (pc); pc.RegisterHost (rp); try { pc.WaitForExit (); } catch { } try { rp.Dispose (); } catch { } if (unixPath != null) File.Delete (unixPath); } catch (Exception ex) { Console.WriteLine (ex); } return 0; }