fork
-
새로운 프로세스를 생성하는 시스템 콜 입니다.
-
호출한 프로세스는 부모 프로세스가 되고, 새로 생성된 프로세스는 자식 프로세스가 됩니다.
-
fork() 함수의 반환값으로 부모 프로세스는 자식 프로세스의 PID 값을 받고, 호출을 성공(자식 프로세스가 생성)하면 0을 반환(자식이 받음)합니다.
자식 프로세스는 부모 프로세스의 메모리를 그대로 복사하여 사용합니다.
wait
- 부모 프로세스가 자식 프로세스의 종료를 기다리는 함수입니다.
setbuf
- 표준 입출력 함수를 사용할 때 버퍼링 방식을 변경할 수 있는 함수
setbuf 함수를 사용하여 버퍼링 방식을 변경하면 stdout과 같은 표준 출력 스트립에 출력하는 내용이 바로 화면에 나타날 수 있도록합니다.
#include <stdio.h>
int main() {
setbuf(stdout, NULL);
return 0;
}
exec
- 새로운 프로그램을 실행하기 위해 현재 프로세스의 메모리 이미지를 새로운 프로그램의 메모리 이미지로 교체하는 함수입니다.(덮어쓰기)
int execl(const char *path, const char *arg, ...);
- path : 실행하고자 하는 새로운 프로그램의 경로
- arg : 실행하고자 하는 새로운 프로그램에 전달할 인수
pipe
- 양방향 통신용 파일 디스크립터 두 개를 생성하는 함수입니다.
- 파이프 한쪽으로 쓰여진 데이터를 다른 쪽에서 읽어들일 수 있는 구조로 되어 있으며, 일반적으로 부모 프로세스와 자식 프로세스 간의 통신에 많이 사용합니다.
- pipe 함수를 호출하면 파이프의 읽기용과 쓰기용으로 각각의 fd를 반환하는데, 이 fd를 이용하여 각각 파이프에 데이터를 쓰거나 읽어올 수 있습니다.
구현 및 분석
https://github.com/kimhyunsong/kdt_linux_system