Notice
Recent Posts
Recent Comments
Link
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

따..딱히 공부하려고 포스팅하는 건 아니니까..!

[리눅스]프로세스 제어 (프로세스 생성) 본문

시스템|서버|네트워크

[리눅스]프로세스 제어 (프로세스 생성)

보즈리 2015. 4. 30. 23:20



새로운 프로세스 생성하기

새로운 프로세스를 생성하는 유일한 방법 fork() 시스템 호출이다.


 

 #include <sys/types.h>

 #include <unistd.h>


 pid_t fork(); // pid_t는 int형


 이 시스템 호출은 한번 호출 되면 자식 프로세스를 만드므로, 두 번 반환한다.

 (= 자식 프로세스에서 0을 반환, 부모 프로세스에서 자식 프로세스의 ID를 반환)

 실패 시 -1을 반환한다.


자식 프로세스(child process) : 새로 생성되는 프로세스, 부모 프로세스를 똑같이 복제 (= 부모의 코드, 데이터, 스택, 힙 등을 똑같이 복제)

부모 프로세스(parent process) : 자식 프로세스를 생성한 프로세스


※ 이때, 자식 프로세스와 부모 프로세스는 독립적으로 실행을 한다. 즉, fork() 시스템 호출 이후의 코드부터 실행을 계속 한다.



- fork() 사용 예


1) 자식 프로세스 생성





결과



2) 1개의 부모 프로세스에서 자식 프로세스 2개 생성




결과




두가지 예시를 들었는데, 두 예시의 핵심은 다음과 같다.


1. 자식 프로세스는 fork()의 개수만큼 생성된다.

2. 자식 프로세스는 나중에 생긴 것이 먼저 실행된다.

'시스템|서버|네트워크' 카테고리의 다른 글

[리눅스]프로그램 실행과 종료  (0) 2016.04.07
쓰레드  (0) 2016.03.21
vagrant와 윈도우즈 연결하기  (0) 2015.01.14
[리눅스]프로세스(Process)  (0) 2014.12.09
파일 시스템(File System)  (1) 2014.11.26
Comments