일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 도커
- github
- 깃
- HTML
- 플러터
- Flutter
- c언어
- c# 윈폼
- Python
- 포인터
- 다트 언어
- gitlab
- jupyter
- vim
- C++
- C언어 포인터
- git
- dart 언어
- 유니티
- Data Structure
- 구조체
- Houdini
- c#
- C# delegate
- c# 추상 클래스
- Unity
- jupyter lab
- docker
- c# winform
- Algorithm
- Today
- Total
목록자식 프로세스 (2)
nomad-programmer
자식 프로세스가 생성하는 데이터를 실시간으로 읽는 방법 pipe() 함수는 데이터 스트림 두 개를 연다. # 데이터 스트림 0 표준 입력 1 표준 출력 2 표준 에러 3 파이프의 읽는 쪽 (ex: fd[0]) 4 파이프의 쓰는 쪽 (ex: fd[1]) 자식 프로세스가 부모 프로세스에 데이터를 보내야 하므로, 자식 프로세스의 표준 출력과 부모 프로세스의 표준 입력에 연결된 파이프가 필요하다. 파이프는 pipe() 함수로 생성한다. 이 함수는 연결된 두 스트림을 만들어 테이블에 추가한다. 한쪽 스트림에 쓴 데이터는 다른 쪽 스트림에서 바로 읽을 수 있다. pipe() 함수가 디스크립터 테이블에 두 항목을 만들 때, 디스크립터들을 항목이 두 개 있는 배열에 저장한다. // 디스크립터들이 배열에 저장됨 int ..
exec() 함수를 호출하면 새로운 프로그램을 실행해 현재 함수를 대체한다. 그러면 원래 프로그램은 곧바로 종료된다. fork()는 프로세스를 복제한다. fork()는 현재 프로세스의 완전한 사본을 만든다. 새로 만든 사본은 똑같은 프로그램을 똑같은 위치에서 실행한다. 똑같은 변수를 갖고 있고 변수 안에 들어 있는 값도 똑같다. 단 하나 차이점이라면 사본 프로세스의 PID가 원래 프로세스와 다르다는 것이다. 원래 프로세스는 "부모 프로세스"라고 하며, 새로 생성된 사본은 "자식 프로세스"라고 부른다. 리눅스 및 맥과는 달리 윈도우는 기본적으로 fork()를 지원하지 않는다. 프로세스는 누가 부모이고 누가 자식인지 알 수 있는 방법이 필요하다. 따라서 fork() 함수는 자식 프로세스에는 0을, 부모 프로..