리눅스

본문 바로가기

사이트 내 전체검색


4. 프로세스 원리

페이지 정보

작성자 관리자 댓글 0건 조회 6,006회 작성일 18-12-05 11:53

본문

​(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

 

댓글목록

등록된 댓글이 없습니다.



개인정보취급방침 서비스이용약관
Copyright © www.leelab.co.kr All rights reserved.
상단으로
TEL. 063-469-4551 FAX. 063-469-4560
전북 군산시 대학로 558
군산대학교 컴퓨터정보공학과
PC 버전으로 보기