프로세스를 관리하기 위한 코딩을 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 |