프로세스 생성과 관리
2024. 9. 17. 23:16ㆍLinux*security
반응형
#include <stdio.h> // 헤더 파일 수정
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
int main(void)
{
pid_t pid;
switch (pid = fork()) {
case -1:
perror("fork"); // fork 실패 시 오류 메시지 출력
break;
case 0: // 자식 프로세스
printf("CHILD PROCESS %d\n", getpid());
sleep(3);
system("echo CHILD");
system("ps -l"); // 'ps -1'는 잘못된 옵션, 'ps -l'로 수정
exit(0); // 자식 프로세스 종료
break;
default: // 부모 프로세스
printf("PARENT PROCESS %d\n", getpid());
printf("Return Value of fork %d\n\n", pid);
sleep(7);
system("echo PARENT");
system("ps -l"); // 'ps -1'는 잘못된 옵션, 'ps -l'로 수정
break;
}
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
- stdio.h: 표준 입출력 함수 사용.
- stdlib.h: 표준 라이브러리 함수 사용 (예: exit).
- unistd.h: POSIX 운영 체제 API를 사용 (예: fork, sleep).
- sys/types.h: 데이터 유형 정의 (예: pid_t).
int main(void)
{
pid_t pid;
- main 함수: 프로그램의 시작 지점.
- pid_t pid: 프로세스 ID를 저장하기 위한 변수.
switch (pid = fork()) {
case -1:
perror("fork"); // fork 실패 시 오류 메시지 출력
break;
- fork() 함수 호출: 새로운 프로세스를 생성한다. 자식 프로세스는 부모 프로세스의 복사본이다.
- pid = fork(): fork()의 반환값을 pid에 저장한다.
- -1: fork() 호출이 실패했음을 나타낸다. perror("fork")를 사용하여 오류 메시지를 출력한다.
case 0: // 자식 프로세스
printf("CHILD PROCESS %d\n", getpid());
sleep(3);
system("echo CHILD");
system("ps -l"); // 프로세스 상태 출력
exit(0); // 자식 프로세스 종료
break;
case 0: 자식 프로세스에서 실행되는 코드.
- printf("CHILD PROCESS %d\n", getpid()): 자식 프로세스의 ID를 출력한다.
- sleep(3): 3초 동안 대기한다.
- system("echo CHILD"): "CHILD"라는 문자열을 출력한다.
- system("ps -l"): 현재 프로세스 상태를 출력한다.
- exit(0): 자식 프로세스를 종료한다.
default: // 부모 프로세스
printf("PARENT PROCESS %d\n", getpid());
printf("Return Value of fork %d\n\n", pid);
sleep(7);
system("echo PARENT");
system("ps -l"); // 프로세스 상태 출력
break;
}
return 0;
}
- default: 부모 프로세스에서 실행되는 코드.
- printf("PARENT PROCESS %d\n", getpid()): 부모 프로세스의 ID를 출력한다.
- printf("Return Value of fork %d\n\n", pid): fork()의 반환값 (자식 프로세스의 PID)을 출력한다.
- sleep(7): 7초 동안 대기한다.
- system("echo PARENT"): "PARENT"라는 문자열을 출력한다.
- system("ps -l"): 현재 프로세스 상태를 출력한다.
반응형
'Linux*security' 카테고리의 다른 글
한국 미러 서버를 통해 패키지를 다운로드 | notepadqq (0) | 2024.09.18 |
---|---|
UFW(Uncomplicated Firewall) (0) | 2024.09.18 |
Vim 에디터에서 텍스트 편집 환경을 설정 (0) | 2024.09.15 |
sysinfo 함수 매뉴얼 (0) | 2024.09.09 |
GCC 컴파일러가 C 소스 파일을 실행 파일로 변환하는 과정 (0) | 2024.09.09 |