4. 프로세스 원리
페이지 정보
작성자 관리자 댓글 0건 조회 6,007회 작성일 18-12-05 11:53본문
4. 프로세스 원리
(1) 프로세스 ID
[master@leejinkwan ~]$ vi proctest.c
#include <stdio.h>
#include <unistd.h>
int main()
{
printf("Hello !\n");
printf("나의 프로세스 번호 : [%d] \n", getpid());
printf("내 부모 프로세스 번호 : [%d] \n", getppid());
system("ps");
}
[master@leejinkwan ~]$ gcc proctest.c -o proctest
[master@leejinkwan ~]$ ls
proctest proctest.c
[master@leejinkwan ~]$ ./proctest
Hello !
나의 프로세스 번호 : [15603]
내 부모 프로세스 번호 : [15358]
PID TTY TIME CMD
15358 pts/0 00:00:00 bash
15603 pts/0 00:00:00 proctest
15604 pts/0 00:00:00 ps
[master@leejinkwan ~]$
(2) 프로세스 생성
- fork() 시스템 호출
부모 프로세스를 똑같이 복제하여 새로운 자식 프로세스를 생성한다. 자식 프로세스에게는 0을 반환하고 부모 프로세스에게는 자식 프로세스 ID를 반환한다.
[master@leejinkwan ~]$ vi forktest.c
#include <stdlib.h>
#include <stdio.h>
/* 부모 프로세스가 자식 프로세스를 생성하고 서로 다른 메시지를 프린트 */
int main()
{
int pid;
pid = fork();
if (pid ==0) { // 자식 프로세스
printf("[Child] : Hello, world pid=%d\n", getpid());
}
else { // 부모 프로세스
printf("[Parent] : Hello, world pid=%d\n", getpid());
}
sleep(10);
}
[master@leejinkwan ~]$ gcc forktest.c
[master@leejinkwan ~]$ ls
a.out proctest forktest.c proctest.c
[master@leejinkwan ~]$ ./a.out
[Parent] : Hello, world pid=15507
[Child] : Hello, world pid=15508
^Z
[1]+ Stopped ./a.out
[master@leejinkwan ~]$ ps axf
PID TTY STAT TIME COMMAND
946 ? Ss 0:00 /usr/sbin/sshd -D
15351 ? Ss 0:00 \_ sshd: master [priv]
15354 ? S 0:00 \_ sshd: master@pts/0
15358 pts/0 Ss 0:00 \_ -bash
15507 pts/0 T 0:00 \_ ./a.out
15508 pts/0 T 0:00 | \_ ./a.out
15509 pts/0 R+ 0:00 \_ ps axf
[master@leejinkwan ~]$ fg
./a.out
[master@leejinkwan ~]$
[master@leejinkwan ~]$ ps axf
946 ? Ss 0:00 /usr/sbin/sshd -D
15351 ? Ss 0:00 \_ sshd: master [priv]
15354 ? S 0:00 \_ sshd: master@pts/0
15358 pts/0 Ss 0:00 \_ -bash
15510 pts/0 R+ 0:00 \_ ps axf
댓글목록
등록된 댓글이 없습니다.