C#에서 프로세스 시작

Muhammad Zeeshan 2023년10월12일
  1. C#의 프로세스란
  2. Process.Start를 사용하여 C#에서 프로세스 시작
  3. ProcessStartInfo를 사용하여 C#에서 프로세스 시작
  4. Process.GetProcesses를 사용하여 C#에서 프로세스 시작
  5. Process.GetProcessesByName을 사용하여 C#에서 프로세스 시작
  6. StandardOutput을 사용하여 C#에서 프로세스 시작
  7. Process.Kill을 사용하여 C#에서 프로세스 중지
C#에서 프로세스 시작

이 기사에서는 C#에서 프로세스를 시작하는 다양한 방법을 살펴봅니다.

C#의 프로세스란

프로세스를 통해 개발자는 로컬 및 원격 프로세스에 액세스하고 로컬 시스템 프로세스를 시작 및 종료할 수 있습니다.

ProcessStartInfo는 ‘프로세스’가 시작될 때 활용되는 값 모음을 정의합니다. Process 클래스는 System.Diagnostics 네임스페이스에 있습니다.

Process.Start를 사용하여 C#에서 프로세스 시작

Process.Start로 프로세스를 시작하려면 다음 단계를 따르십시오.

아래 라이브러리를 가져옵니다.

using System;
using System.Diagnostics;

Main 클래스를 만들고 Main 클래스 내부에 프로세스 시작을 위한 이 코드를 작성합니다(실행하려는 프로그램, URL 또는 파일 지정).

Process.Start(@"C:\Users\Shani\Desktop\process.txt");

소스 코드:

using System;
using System.Diagnostics;

class ProcesswithProcessStart {
  public static void Main() {
    Process.Start(@"C:\Users\Shani\Desktop\process.txt");
    Console.WriteLine("Done");
  }
}

Start 기능은 프로세스를 시작하는 데 사용됩니다. ProcesswithProcessStart 클래스를 실행한 후 이 출력을 얻습니다.

프로세스 시작 출력

ProcessStartInfo를 사용하여 C#에서 프로세스 시작

모든 실행 파일을 실행할 수 있습니다. 그러나 ProcessStartInfo의 속성이 필요할 수 있습니다.

아래 단계에 따라 ProcessStartInfo 방법을 사용하여 프로세스를 시작하십시오.

아래 라이브러리를 가져옵니다.

using System;
using System.Diagnostics;

StartInfo.FileName 속성은 시작할 프로그램 또는 문서를 지정합니다. Microsoft Word 프로그램을 예로 사용하겠습니다. 기본적인 텍스트 편집기이자 작가입니다.

process.StartInfo.FileName = "WINWORD.EXE";

파일 이름은 StartInfo.Arguments에 매개변수로 전달됩니다. 여기에서 process.docx라는 단어 파일을 시작합니다.

process.StartInfo.Arguments = @"C:\Users\Shani\Desktop\process.docx";

소스 코드:

using System;
using System.Diagnostics;

Process process = new Process();

process.StartInfo.FileName = "WINWORD.EXE";
process.StartInfo.Arguments = @"C:\Users\Shani\Desktop\process.docx";
process.Start();

출력:

프로세스 시작 정보

Process.GetProcesses를 사용하여 C#에서 프로세스 시작

Process.GetProcesses 메소드는 기존 프로세스 리소스에 연결된 새로운 Process 구성 요소 목록을 생성합니다.

아래 라이브러리를 가져옵니다.

using System;
using System.Diagnostics;

이 코드는 모든 프로세스의 목록을 생성합니다.

Process[] LinkedProcesses = Process.GetProcesses();

그 다음, 우리는 일련의 프로세스를 얻습니다.

Array.ForEach(LinkedProcesses, (process) => {
  Console.WriteLine("Process: {0} Id: {1}", process.ProcessName, process.Id);
});

ReadKey() 함수는 화면을 유지합니다.

Console.ReadKey();

소스 코드:

using System;
using System.Diagnostics;

Process[] LinkedProcesses = Process.GetProcesses();

Array.ForEach(LinkedProcesses, (process) => {
  Console.WriteLine("Process: {0} Id: {1}", process.ProcessName, process.Id);
});
Console.ReadKey();

출력:

프로세스 가져오기 프로세스

Process.GetProcessesByName을 사용하여 C#에서 프로세스 시작

Process.GetProcessesByName 메소드는 새로운 Process 구성 요소의 배열을 생성하고 제공된 프로세스와 동일한 이름을 가진 기존 프로세스 리소스와 연관시킵니다.

아래 라이브러리를 가져옵니다.

using System;
using System.Diagnostics;

Internet Download Manager와 관련된 모든 프로세스는 예제에서 생성됩니다. 해당 ID와 프로세스 이름이 생성됩니다.

Process[] LinkedProcesses = Process.GetProcessesByName("InternetDownloadManager");

사용자는 이름이 IDM인 프로세스 목록을 얻습니다.

Console.WriteLine("{0} IDM LinkedProcesses", LinkedProcesses.Length);

함수에서 반환된 모든 프로세스에 액세스하기 위해 foreach 루프를 사용합니다.

각 프로세스의 ID에 액세스합니다. 마지막으로 발견된 총 프로세스 수를 표시합니다.

Array.ForEach(LinkedProcesses, (process) => {
  Console.WriteLine("Process: {0} Id: {1}", process.ProcessName, process.Id);
});

소스 코드:

using System;
using System.Diagnostics;

Process[] LinkedProcesses = Process.GetProcessesByName("InternetDownloadManager");
Console.WriteLine("{0} IDM LinkedProcesses", LinkedProcesses.Length);
Array.ForEach(LinkedProcesses, (process) => {
  Console.WriteLine("Process: {0} Id: {1}", process.ProcessName, process.Id);
});
Console.ReadKey();

출력:

프로세스 이름으로 프로세스 가져오기

StandardOutput을 사용하여 C#에서 프로세스 시작

StandardOutput 속성은 애플리케이션의 텍스트 기반 출력을 읽는 데 사용할 수 있는 경로를 반환합니다.

이 속성을 사용하여 표준 프로세스 출력을 리디렉션할 수 있습니다(ProcessStartInfo에서 사용 가능). 한 프로그램의 출력을 다른 프로그램에서 관찰할 수 있습니다.

아래 라이브러리를 가져옵니다.

using System;
using System.Diagnostics;
using System.IO;

여기서 출력하려는 ​​프로세스의 이름을 지정합니다.

Prs.StartInfo.FileName = "ipconfig.exe";

UseShellExecute를 false로 설정하여 입력, 출력 및 오류 스트림을 리디렉션할 수 있습니다.

Prs.StartInfo.UseShellExecute = false;
Prs.StartInfo.RedirectStandardOutput = true;

이 코드는 귀하가 제공한 정보를 사용하여 프로세스를 시작합니다.

Prs.Start();

표준 출력의 경우 StreamReader를 얻습니다.

StreamReader sr = Prs.StandardOutput;

ReadToEnd() 함수는 모든 데이터를 읽는 데 사용됩니다.

string dataoutput = sr.ReadToEnd();

ReadKey()는 출력을 표시하기 위해 화면을 유지합니다.

Console.ReadKey();

소스 코드:

using System;
using System.Diagnostics;
using System.IO;

class StandarOutput {
  public static void Main() {
    using (Process Prs = new Process()) {
      Prs.StartInfo.FileName = "ipconfig.exe";
      Prs.StartInfo.UseShellExecute = false;
      Prs.StartInfo.RedirectStandardOutput = true;
      Prs.Start();
      StreamReader sr = Prs.StandardOutput;
      string dataoutput = sr.ReadToEnd();
      Console.WriteLine(dataoutput);
      Console.ReadKey();
    }
  }
}

출력:

표준 출력

Process.Kill을 사용하여 C#에서 프로세스 중지

다음 예제에서는 프로그램을 시작한 다음 몇 초 후에 프로그램을 종료합니다.

아래 라이브러리를 가져옵니다.

using System;
using System.Diagnostics;
using System.Threading;

Thread.Sleep(5000)을 사용하여 프로세스는 메모장을 시작하고 3초 후에 종료합니다.

Thread.Sleep(5000);

Kill() 함수는 프로세스를 종료하는 데 사용됩니다.

process.Kill();

소스 코드:

using System;
using System.Diagnostics;
using System.Threading;

class KillProcess {
  public static void Main() {
    Process process = Process.Start("notepad.exe");
    Thread.Sleep(1000);
    process.Kill();
  }
}
Muhammad Zeeshan avatar Muhammad Zeeshan avatar

I have been working as a Flutter app developer for a year now. Firebase and SQLite have been crucial in the development of my android apps. I have experience with C#, Windows Form Based C#, C, Java, PHP on WampServer, and HTML/CSS on MYSQL, and I have authored articles on their theory and issue solving. I'm a senior in an undergraduate program for a bachelor's degree in Information Technology.

LinkedIn

관련 문장 - Csharp Process