Beispiel #1
0
        private static void RunServerProcess(string[] args)
        {
            var filename          = args[0];
            var port              = GetTcpPort(args);
            var profileServerFlag = GetProfileServerFlag(args);

            Logger.LogInfo("Server image file name is: {0}", filename);
            Logger.LogInfo("TCP port is: {0}", port);
            Logger.LogInfo("Profile server flag is: {0}", profileServerFlag);

            if (profileServerFlag)
            {
                Debug.WriteLine("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
                Debug.WriteLine(string.Format("Run server executable with argument (i.e. tcp port number) {0}", port));
                Debug.WriteLine("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
            }
            else
            {
                using (var job = new JobObject()) {
                    // Create a new Job for this process and its children.
                    Logger.LogInfo("Creating job.");
                    job.AddCurrentProcess();
                    Logger.LogInfo("Job created successfully.");

                    // Create the child process and redirect stdin, stdout, stderr.
                    var argumentLine = (port.HasValue ? port.Value.ToString() : "");
                    Logger.LogInfo("Creating server process.");
                    using (var createProcessResult = new ProcessCreator().CreateProcess(filename, argumentLine, CreateProcessOptions.Default)) {
                        Logger.LogInfo("Server process created successfully (pid={0}).", createProcessResult.Process.Id);
                        Logger.LogInfo("Waiting for server process to exit.");
                        createProcessResult.Process.WaitForExit();
                        Logger.LogInfo("Server process exit code: 0x{0:x8}.", createProcessResult.Process.ExitCode);
                    }
                }

                Logger.LogInfo("Exiting normally.");
            }
        }