반응형
안녕하세요. 이번 포스팅은 자신의 프로세스를 Kill 후 실행시키는 기능을 구현했습니다.
개발을 하다보면 버그 또는 특정한 로직에 따라서 프로세스를 Kill하고 다시 실행되야되는 경우가 있습니다.
당연히 타 프로세스라면 어렵지 않지만 Self로 프로세스를 다시 살려야 되는 경우가 있었습니다.
Self 프로세스를 Kill 후 Start 하는 방법에 대하 고민하다가 윈도우 배치파일을 이용한 방법을 적용했습니다.
using System;
using System.Collections.Generic;
using System.IO;
class Solution {
static void Main(String[] args) {
MakeBatchFile("BatchTest.exe", "BatchFile.bat");
StartBatch("BatchFile.bat");
}
static void StartBatch(string strBatchName)
{
//! 배치파일 실행
System.Diagnostics.Process.Start(strBatchName);
}
static void MakeBatchFile(string strProcessName, string strMakeBatchName)
{
string strPath = Environment.CurrentDirectory + "\\" + string.Format("{0}", strMakeBatchName);
//! 배치파일 생성하기
FileStream strem = File.Create(strPath);
strem.Close();
string strBatch = "";
strBatch += string.Format("@echo off \n");
strBatch += string.Format("taskkill /IM {0} /f \n", strProcessName);
strBatch += string.Format("start /d \"{0}\\\" /b {1} \n", Environment.CurrentDirectory, strProcessName);
//! 배치파일 내용 작성
if(File.Exists(strPath))
{
File.WriteAllText(strPath, strBatch);
}
}
}
1. StartBatch : 배치파일을 실행해 줍니다.
2. MakeBatchFile : 필요한 배치 파일을 만들어줍니다.
- 배치 파일 기능 중 taskkill을 적용하였고 옵션으로 /IM과 /f 를 적용했습니다.
- IM : 종료할 프로세스의 이름 지정
- /f : 강제종료
taskkill의 매개변수는 는 아래 그림과 같습니다.
반응형