C# Process arguments multiple 방법. 한 줄 또는 배열 형식으로 전달하세요.

C#에서는 외부 프로세스에 아규먼트(명령줄 인자)를 전달할 때 크게 두 가지 방식을 안내해드릴게요.

  1. 한 줄의 문자열로 인자를 구성하여 전달하는 방법
  2. 배열 형태로 개별 인자를 나눠서 처리하는 방법

아래에서는 각각의 방식으로 "BEOMSANG", "BEOM SANG" 등 다양한 형태의 데이터를 전달하는 방법을 소개해드리겠습니다.

1. 한 줄로 인자 전달하기

코드 예제

한 줄로 전달할 때는 공백과 특수 문자를 고려하여, 큰따옴표(")로 공백이 포함된 값을 묶어야 해요.

ProcessStartInfo startInfo = new ProcessStartInfo
{
    FileName = "MyApp.exe",
    Arguments = "\"BEOMSANG\" \"BEOM SANG\" \"\""
};

Process process = new Process
{
    StartInfo = startInfo
};
process.Start();

결과

Main(string[] args)에서 배열 형태로 접근할 수 있으며, args 배열의 내용은 다음과 같이요.

  • args[0] == "BEOMSANG"
  • args[1] == "BEOM SANG"
  • args[2] == "" (빈 문자열)

2. 배열 형식으로 전달하기

C#에서는 배열로 개별 인자를 명확하게 나눈 뒤 처리할 수도 있습니다. 이 방식은 동적으로 많은 인자를 처리하거나 복잡한 구조를 다룰 때 유용해요.

코드 예제

string[] arguments = { "BEOMSANG", "BEOM SANG", "" };

// 배열을 한 줄로 변환
string argumentString = string.Join(" ", arguments.Select(arg => $"\"{arg}\""));

ProcessStartInfo startInfo = new ProcessStartInfo
{
    FileName = "MyApp.exe",
    Arguments = argumentString
};

Process process = new Process
{
    StartInfo = startInfo
};
process.Start();

결과

위 코드는 배열 형태로 각 인자를 명시적으로 설정하고, 한 줄의 문자열로 변환하여 전달합니다. 결과는 한 줄로 전달했을 때와 동일해요.

  • args[0] == "BEOMSANG"
  • args[1] == "BEOM SANG"
  • args[2] == ""

3. Main(string[] args)에서 처리

외부 프로세스의 Main 메서드에서 전달받은 인자를 출력하는 코드

static void Main(string[] args)
{
    Console.WriteLine("Received Arguments:");
    for (int i = 0; i < args.Length; i++)
    {
        Console.WriteLine($"Argument {i}: {(args[i] == "" ? "(Empty String)" : args[i])}");
    }
}

출력 결과

한 줄로 전달하거나 배열로 처리한 경우 모두 동일한 결과를 출력해요.

Received Arguments:
Argument 0: BEOMSANG
Argument 1: BEOM SANG
Argument 2: (Empty String)

4. 한 줄 vs 배열 방식의 비교

항목한 줄로 전달배열로 처리
코드 가독성단순한 경우 적합. 긴 인자는 복잡해질 수 있음.동적 인자 생성 시 적합하며, 가독성이 좋음.
동적 처리수동으로 문자열 조합 필요.배열 조작이 편리하여 동적 데이터 처리에 유리.
공백 처리수동으로 큰따옴표를 추가해야 함.자동으로 큰따옴표를 추가할 수 있어 실수가 줄어듦.
유지보수변경 시 문자열 수정 필요.추가/삭제가 간단하며 유지보수에 용이.

5. Empty String 처리 유의점

  • 빈 문자열("")은 명시적으로 따옴표로 전달해야 프로세스에서 무시되지 않고 인자로 인식합니다.
  • null 값은 전달되지 않으므로, 빈 값을 전달하려면 반드시 ""를 포함해야 해요.

요약

  • 한 줄로 전달: 간단한 경우에 적합하며, Arguments를 명시적으로 작성하세요.
    예: Arguments = "\"BEOMSANG\" \"BEOM SANG\" \"\""
  • 배열로 처리: 많은 인자를 동적으로 생성하거나 다룰 때 적합하며, 유지보수가 쉽습니다.
    예: string[] arguments = { "BEOMSANG", "BEOM SANG", "" };

어떤 방식을 선택하든 프로세스 간 데이터 전달을 수행할 수 있습니다. 😊

이전최근
댓글 쓰기
가져가실 때, 출처 표시 부탁드려요! 감사합니다. 💗