프로세스를 관리하기 위한 코딩을 JAVA로 제작해 보았다

( 코드가 이상하게 tab이 맞지 않네요.. )

 

기능별로 함수로 구현

1. 프로세스 목록 보기

2. 프로세스 이름 조회

3. 프로세스 ID 조회

4. 프로세스 이름으로 종료

5. 프로세스 ID로 종료

 

동작

 

- 원하는 기능을 선택 받고 있다

 

- 1번을 입력해 조회를 했을 때 출력되는 모습이다

 

- 2번을 입력하고 프로세스 이름을 입력하면 프로세스명과 프로세스 ID를 출력해준다

 

- 3번을 입력하고 프로세스 ID를 입력해주면 프로세스 이름과 프로세스 ID를 출력해준다

 

- 4번을 입력하고 종료할 프로세스 이름을 입력해주면 성공적으로 종료된걸 확인할 수 있다

 

- 5번을 입력하고 종료할 프로세스 ID를 입력하면 성공적으로 종료된걸 확인할 수 있다

 

Main 페이지 코드

public static void main(String[] args) {
	
	Scanner input = new Scanner(System.in);
	
    int menu = 0;
	String find = null;					// switch문 내에서 문자열을 받을때 사용하는 변수
	
	Proc p = new Proc();				// 함수 호출 용도로 생성

	while(true)
	{
		System.out.println("=====프로세스 관리=====");
		System.out.println("1. 프로세스 목록");
		System.out.println("2. 프로세스 이름 검색");
		System.out.println("3. 프로세스 ID 검색");
		System.out.println("4. 프로세스 이름으로 종료");
		System.out.println("5. 프로세스 ID로 종료");
		
		System.out.print("번호 입력: ");
		menu = input.nextInt();			// menu변수에 숫자를 입력
		input.nextLine();				// 개행이 남아있기 때문에 비워주기 위한 용도
										
		switch (menu) {					// menu변수를 통해 해당하는 맞는 함수를 호출
		case 1:
			System.out.println("프로세스 목록");
			p.list_all();				// 프로세스 리스트 조회용 함수
			break;
			
		case 2:
			System.out.print("프로세스 이름 입력 : ");
			find = input.nextLine();
			p.img_find(find);			// 프로세스 이름으로 조회하는 함수
			break;
			
		case 3:
			System.out.print("프로세스 ID 입력 : ");
			find = input.nextLine();
			p.pid_find(find);			// 프로세스 ID로 조회하는 함수
			break;
			
		case 4:
			System.out.print("프로세스 이름 입력 : ");
			find = input.nextLine();
			p.img_kill(find);			// 프로세스 이름을 통해 종료하는 함수
			break;
			
		case 5:
			System.out.print("프로세스 ID 입력 : ");
			find = input.nextLine();
			p.pid_kill(find);			// 프로세스 ID를 통해 종료하는 함수
			break;
		default:
			break;
		}
	}
}

 

Proc 함수 코드

public class Proc {

	// 프로세스 리스트 조회 함수
	public void list_all() {

		ArrayList<String> list = new ArrayList<String>();
		
        // Arraylist에 조회하는 명령어를 옵션별로 잘라서 넣어준다
		list.add("TASKLIST");
		list.add("/SVC");
		list.add("/FO");
		list.add("CSV");

		String data = null;		// 명령어를 통해 나온 내용을 저장하는 변수
		
        // 예외처리
		try {
			// Process객체를 생성
            // 외부 프로그램을 실행시키는 ProcessBuilder에 list를 넣고 실행
			Process ps = new ProcessBuilder(list).start();
			
            // ps의 결과 값을 byte로 받아서 문자로 처리하게 해준다 
			InputStreamReader in = new InputStreamReader(ps.getInputStream());
			BufferedReader br = new BufferedReader(in);
			
            // cmd 창에서 조회를 했을 때 나오는 첫 번째 쓸모 없는 라인을 가져온다
			data = br.readLine();
			
            // 반복문을 통해 프로세스 리스트를 다 가져온다
			while (true) {
            
            	// 한번 더 읽어들여 처음 읽은걸 버린다
				data = br.readLine();
				
                // data에 내용이 없을 경우 반복문을 빠져나간다
				if (data == null) {
					break;
				}
                // \로 작성된 것을 공백으로 변환한다
				data = data.replaceAll("\"", "");
                // data 변수에 담긴 값에서 ','을 기준으로 잘라 0번지와 1번지를 가져오고 출력
				System.out.printf("%s\t%s\n", data.split(",")[0], data.split(",")[1]);
			}

		} catch (Exception e) {

			e.printStackTrace();

		}

	}
	
    // 프로세스 이름으로 조회하는 함수
	public void img_find(String dst) {

		ArrayList<String> list = new ArrayList<String>();
		
        // Arraylist에 조회하는 명령어를 옵션별로 잘라서 넣어준다
		list.add("TASKLIST");
		list.add("/SVC");
		list.add("/FO");
		list.add("CSV");

		String data = null;		// 명령어를 통해 나온 내용을 저장하는 변수
		String src = null;		// 프로세스 이름을 담을 변수
		
        // 예외처리
		try {
			// Process객체를 생성
            // 외부 프로그램을 실행시키는 ProcessBuilder에 list를 넣고 실행
			Process ps = new ProcessBuilder(list).start();

			 // ps의 결과 값을 byte로 받아서 문자로 처리하게 해준다 
			InputStreamReader in = new InputStreamReader(ps.getInputStream());
			BufferedReader br = new BufferedReader(in);

			 // cmd 창에서 조회를 했을 때 나오는 첫 번째 쓸모 없는 라인을 가져온다
			data = br.readLine();

			// 반복문을 통해 프로세스 리스트를 다 가져온다
			while (true) {
            	
                // 한번 더 읽어들여 처음 읽은걸 버린다
				data = br.readLine();
				
                // data에 내용이 없을 경우 반복문을 빠져나간다
				if (data == null) {
					break;
				}
                // \로 작성된 것을 공백으로 변환한다
				data = data.replaceAll("\"", "");
                
                // data 변수에 담긴 값에서 ','을 기준으로 잘라 0번지를 가져옴
				src = data.split(",")[0];
				
                // src값과 dst값이 같은지 비교한다
				if(src.equals(dst))
				{
                	// data 변수에 담긴 값에서 ','을 기준으로 잘라 0번지와 1번지를 가져오고 출력
					System.out.printf("%s\t%s\n", data.split(",")[0], data.split(",")[1]);	
				}
			}

		} catch (Exception e) {

			e.printStackTrace();

		}

	}

	// 프로세스 ID로 조회하는 함수
	public void pid_find(String dst) {
		
		ArrayList<String> list = new ArrayList<String>();
        
		// Arraylist에 조회하는 명령어를 옵션별로 잘라서 넣어준다
		list.add("TASKLIST");
		list.add("/SVC");
		list.add("/FO");
		list.add("CSV");

		String data = null;		// 명령어를 통해 나온 내용을 저장하는 변수
		String src = null;		// 프로세스 이름을 담을 변수
		
        // 예외처리
		try {
			
            // Process객체를 생성
            // 외부 프로그램을 실행시키는 ProcessBuilder에 list를 넣고 실행
			Process ps = new ProcessBuilder(list).start();

			// ps의 결과 값을 byte로 받아서 문자로 처리하게 해준다 
			InputStreamReader in = new InputStreamReader(ps.getInputStream());
			BufferedReader br = new BufferedReader(in);

			 // cmd 창에서 조회를 했을 때 나오는 첫 번째 쓸모 없는 라인을 가져온다
			data = br.readLine();

			// 반복문을 통해 프로세스 리스트를 다 가져온다
			while (true) {
            
            	// 한번 더 읽어들여 처음 읽은걸 버린다
				data = br.readLine();
				
                // data에 내용이 없을 경우 반복문을 빠져나간다
				if (data == null) {
					break;
				}
                
                // \로 작성된 것을 공백으로 변환한다
				data = data.replaceAll("\"", "");
				
                // data 변수에 담긴 값에서 ','을 기준으로 잘라 1번지를 가져옴
                src = data.split(",")[1];
				
                // src값과 dst값이 같은지 비교한다
				if(src.equals(dst))
				{
                	// data 변수에 담긴 값에서 ','을 기준으로 잘라 0번지와 1번지를 가져오고 출력
					System.out.printf("%s\t%s\n", data.split(",")[0], data.split(",")[1]);	
				}
			}

		} catch (Exception e) {

			e.printStackTrace();

		}


	}
	
    // 프로세스 이름을 통해 종료하는 함수
	public void img_kill(String find) {
		
		ArrayList<String> list = new ArrayList<String>();
		
        // Arraylist에 프로세스 종료 명령어를 옵션별로 잘라서 넣어준다
		list.add("TASKKILL");
		list.add("/F");
		list.add("/IM");
		list.add(find);
		
        // 명령어를 통해 나온 내용을 저장하는 변수
		String data = null;
		
        //예외처리
		try {
        
			// Process객체를 생성
            // 외부 프로그램을 실행시키는 ProcessBuilder에 list를 넣고 실행
			Process ps = new ProcessBuilder(list).start();
			
            // ps의 결과 값을 byte로 받아서 문자로 처리하게 해준다 
			InputStreamReader in = new InputStreamReader(ps.getInputStream());
			BufferedReader br = new BufferedReader(in);

			// cmd 창에서 프로세스를 종료 했을 때 나오는 첫 번째 쓸모 없는 라인을 가져온다
			data = br.readLine();

			// data에 내용이 없으면 반복문에 들어가지 않는다
            // 프로세스 종료가 성공적으로 되었으면 종료시 나오는 메시지를
            // 반복문을 통해 전부 출력한다
			while (data != null) {
				System.out.println(data);
				data = br.readLine();
			}

		} catch (Exception e) {

			e.printStackTrace();

		}

	}
	
    // 프로세스 ID를 통해 종료하는 함수
	public void pid_kill(String find) {
		
		ArrayList<String> list = new ArrayList<String>();
        
		// Arraylist에 프로세스 종료 명령어를 옵션별로 잘라서 넣어준다
		list.add("TASKKILL");
		list.add("/F");
		list.add("/PID");
		list.add(find);

		// 명령어를 통해 나온 내용을 저장하는 변수
		String data = null;
		
        // 예외처리
		try {
			
            // Process객체를 생성
            // 외부 프로그램을 실행시키는 ProcessBuilder에 list를 넣고 실행
			Process ps = new ProcessBuilder(list).start();
			
            // ps의 결과 값을 byte로 받아서 문자로 처리하게 해준다
			InputStreamReader in = new InputStreamReader(ps.getInputStream());
			BufferedReader br = new BufferedReader(in);
			
            // cmd 창에서 프로세스를 종료 했을 때 나오는 첫 번째 쓸모 없는 라인을 가져온다
			data = br.readLine();
			
            // data에 내용이 없으면 반복문에 들어가지 않는다
            // 프로세스 종료가 성공적으로 되었으면 종료시 나오는 메시지를
            // 반복문을 통해 전부 출력한다
			while (data != null) {
				
				System.out.println(data);
				data = br.readLine();
			}

		} catch (Exception e) {

			e.printStackTrace();

		}

	}

}

'JAVA' 카테고리의 다른 글

Port 스캐너 (JAVA)  (0) 2020.11.13
IP 스캐너 코딩 (JAVA)  (0) 2020.11.13
생성자 (JAVA)  (0) 2020.11.13
간단한 구구단 코딩 (JAVA)  (0) 2020.11.05

+ Recent posts