■ 부모 프로세스에서 자식 프로세스 표준 출력 수신하기

----------------------------------------------------------------------------------------------------


TestSolution.zip


[TestChildConsole 프로젝트]

 

Program.cs

 

 

using System;

 

namespace TestChildConsole

{

    /// <summary>

    /// 프로그램

    /// </summary>

    class Program

    {

        //////////////////////////////////////////////////////////////////////////////////////////////////// Method

        ////////////////////////////////////////////////////////////////////////////////////////// Static

        //////////////////////////////////////////////////////////////////////////////// Private

 

        #region 프로그램 시작하기 - Main()

 

        /// <summary>

        /// 프로그램 시작하기

        /// </summary>

        private static void Main()

        {

            Console.WriteLine("ABCDEFGHIJKLMNOPQRSTUVWXYZ");

            Console.WriteLine("ABCDEFGHIJKLMNOPQRSTUVWXYZ");

            Console.WriteLine("ABCDEFGHIJKLMNOPQRSTUVWXYZ");

        }

 

        #endregion

    }

}

 

 

[TestParentConsole 프로젝트]

 

Program.cs

 

 

using System;

using System.Diagnostics;

using System.IO;

 

namespace TestParentConsole

{

    /// <summary>

    /// 프로그램

    /// </summary>

    class Program

    {

        //////////////////////////////////////////////////////////////////////////////////////////////////// Method

        ////////////////////////////////////////////////////////////////////////////////////////// Static

        //////////////////////////////////////////////////////////////////////////////// Private

 

        #region 프로그램 시작하기 - Main()

 

        /// <summary>

        /// 프로그램 시작하기

        /// </summary>

        private static void Main()

        {

            Process process = new Process();

 

            process.EnableRaisingEvents              = true;

            process.StartInfo.FileName               = "TestChildConsole.exe";

            process.StartInfo.Verb                   = "open";

            process.StartInfo.WindowStyle            = ProcessWindowStyle.Hidden;

            process.StartInfo.Arguments              = string.Empty;

            process.StartInfo.UseShellExecute        = false;

            process.StartInfo.RedirectStandardOutput = true;

 

            process.OutputDataReceived += process_OutputDataReceived;

 

            process.Start();

 

            process.BeginOutputReadLine();

 

            process.WaitForExit();

        }

 

        #endregion

 

        #region 프로세스 출력 데이터 수신시 처리하기 - process_OutputDataReceived(sender, e)

 

        /// <summary>

        /// 프로세스 출력 데이터 수신시 처리하기

        /// </summary>

        /// <param name="sender">이벤트 발생자</param>

        /// <param name="e">이벤트 인자</param>

        private static void process_OutputDataReceived(object sender, DataReceivedEventArgs e)

        {

            using(StreamWriter writer = File.AppendText("d:\\ChildConsoleLog.txt"))

            {

                writer.WriteLine(e.Data);

            }

 

            Console.WriteLine(e.Data);

        }

 

        #endregion

    }

}

 

----------------------------------------------------------------------------------------------------

Posted by 사용자 icodebroker
TAG

댓글을 달아 주세요