Process IDs (PID)
-
프로세스에 부여된 식별 번호
-
부모 프로세스
- 자신을 생성한 프로세스
- 모든 프로세스는 부모 프로세스가 있음
- 최상위 프로세스 = kernel (pid=0)
- PPID

Running a new process
Executing a new program
- 바이너리 프로그램을 읽어서 자신을 호출한 프로세스의 메모리 영여겡 덮어 씀. 기존 프로그램은 중지 됨
Creating a new process
- 자신을 호출한 프로세스를 복사하여 새로운 프로세스를 생성


printf가 출력되지않는다. 이유 : 기존이 종료가 되고 메모리는 새롭게 실행한 것이 차지한다.

execv, argv는 argv가 string의 배열이 된다. 첫번째 인자는 ls
마지막은 null
프로세스를 호출한 메모리 영역에 ls의 바이너리 프로그램을 복사했기 때문에
after는 더이상 실행되지 않는다.
[fork()]
- 자신을 복사해 새로운 프로세스 생성
- 부모와 자식 프로세스의 수행은 동시 진행
- return -1 : 에러
- 부모 프로세스 : 자식 프로세스의 PID


end of fork가 각각의 독립성을 가지고 2번 출력된다.

자식의 종료 상태를 얻어오는 방법

status : exit staus를 저장할 위치


자식이 여러명일 경우 특정 자식을 가져오기

-
option
- WNOHANG
- 자식이 종료하기 전이라도, 상태값 바로 반환
- 대기하지 않고 수행을 계속 함
- WNOWAIT
- 상태 값을 반환한 자식 프로세스를 대기 상태로유지
- 다시 exit status를 요청할 수 있음
