(1.1.20) C 프로그램의 Fock() 함수
4
fork () 는 프로그램이 두 프로세스로 나누어지게 합니다.하위 프로세스가 부모 프로세스의 대부분을 복사합니다.
(1) 예1
#include<stdio.h>
#include<unistd.h>
int main(){
int i=1;
if(!fork())i++;
printf("%d
",i); // :1 2
if(!fork())i++;
printf("%d
",i); // :1 2 2 3
return 0;}
if(!fork())i++; 하위 프로세스만 i++ 실행
프로세스가 A의 첫 번째 fok()로 시작되면 프로세스 B가 생성됩니다.
첫 번째 printf A 출력 1 B 출력 2
두 번째 fork () A 생성 프로세스 A1 B 생성 프로세스 B1
두 번째 printf A 출력 1 B 출력 2 A1 출력 2 B1 출력 3
(2) 예제 2
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
int main(void)
{
int i;
for(i=0; i<2; i++){
fork();
printf("-");
}
return 0;
}
출력은 8개'-'입니다.
프로그램이 시작되면 bash에서 프로세스 P1을 생성하여 이 프로그램을 실행합니다. P1이 프로그램에 들어간 후 i=0이 되면 fork ()는 하위 프로세스 P2를 생성하고 '-' 를 출력합니다.P2는 P1의 환경 변수, PC 등 환경을 계승하여 P2가'-'를 출력합니다.동시에 i=1, for 순환을 계속 실행합니다 - P2는 하위 프로세스 P3을 먼저 출력하고 '-'를 출력합니다.P3 프로세스는 P2의 하위 프로세스로 부모 프로세스 P2의 지령, 변수 값, 프로그램 호출 창고, 환경 변수, 버퍼 등을 복사하여'-'를 출력합니다. 여기서 P3는 P2의 버퍼를 계승하기 때문에 그 중'-'가 있기 때문에 P3는'-'두 개를 출력합니다.P1이 프로그램에 들어간 후 i=1일 때 fork ()는 다른 하위 프로세스 P4를 생성하고 '-' 를 출력합니다.P4 역시 "-"를 출력합니다.P4는 P1의 하위 프로세스이기 때문에 P1의 버퍼를 계승합니다. 그 중 하나는 '-' 이기 때문에 P4는 두 개의 '-' 를 출력합니다.
위의 printf("-")를
printf("-
");
fflush를 호출해서 캐시를 제거하십시오.
printf("-");
fflush(stdout);
6개의'-'출력을 보정할 수 있습니다.
(3) 예제 3
#include<stdio.h>
#include<sys/types.h>#include<unistd.h>intmain(void){
inti;
for(i=0;i<2;i++){fork();
// : printf “
”
printf("ppid=%d,pid=%d,i=%d
",getppid(),getpid(),i);}
sleep(10);// , pstree return0;}
ppid=8858,pid=8518,i=0 ppid=8858,pid=8518,i=1 ppid=8518,pid=8519,i=0 ppid=8518,pid=8519,i=1 ppid=8518,pid=8520,i=1 ppid=8519,pid=8521,i=1
예 4
main 프로세스 자체를 제외하고 도대체 몇 개의 프로세스를 만들었습니까?
int main(int argc, char* argv[]) { fork(); fork() && fork() || fork(); fork(); }
18 19 20 21
우선, 이 문제의 고찰점 1.fork 호출 한 번, 두 번 되돌아오기, 하위 프로세스 한 번 0, 부 프로세스 한 번pidt 2. A & & B | | C의 논리와 논리 또는.A & B | | C, A 가 가짜일 경우 (0 으로 표시) 직접 단락 B, 즉 B 는 실행하지 않습니다.그리고 (A & B) 을 표현식이라고 할 수 있습니다. 이 표현식 값이 1이면 C가 실행되지 않습니다.그런 다음 제목을 분석합니다.
20-1=19
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.