Linux에서 fork()를 통해 여러 프로세스를 동시에 생성
1835 단어 linux
2. 각 하위 프로세스가 알림 정보와 자신의 프로세스 식별자를 표시하고 출력한다.
3. 부모 프로세스는 자신의 프로세스 ID와 알림 정보를 표시하고waitpid()를 호출하여 여러 개의 하위 프로세스가 끝날 때까지 기다린다. 그리고 하위 프로세스가 끝난 후에 출력 알림 정보를 표시하면 프로그램이 끝날 것을 나타낸다.
#include
#include
#include
#include
#include
#include
#include
int tprintf(const char *fmt,...);
int main(void)
{
printf("I'm your father,PID is %d.
",getpid());
pid_t pid = fork();
if(pid == 0){
printf("I'm a first son.PID is %d.
",getpid());
exit(1);// exit(1), pid_t pid2 = fork() ,
printf("You should never see this.
");
}
pid_t pid2 = fork();
if(pid2 == 0){
printf("I'm a second son.PID is %d.
",getpid());
exit(1);
printf("You should never see this.
");
}
pid_t pid3 = fork();
if(pid3 ==0){
printf("I'm a third son.PID is %d.
",getpid());
exit(1);
printf("You should never see this.
");
}
else if(pid != -1){
tprintf("Parent forked child process--%d.
",pid);
tprintf("Parent is waiting for child to exit.
");
waitpid(pid,NULL,0);
waitpid(pid2,NULL,0);
waitpid(pid3,NULL,0);
tprintf("Child Process had exited.
");
tprintf("Parent had exited.
");
}
else tprintf("Everything was done without error.
");
return 0;
}
/*
*
*/
int tprintf(const char* fmt,...)
{
va_list args;
struct tm *tstruct;
time_t tsec;
tsec = time(NULL);
tstruct = localtime(&tsec);
printf("%02d:%02d:%02d:%5d|",tstruct->tm_hour,tstruct->tm_min,tstruct->tm_sec,getpid());
va_start(args,fmt);
return vprintf(fmt,args);
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
용감한 바로 가기 및 우분투 응용 프로그램안녕하세요 여러분, 이 기사에서는 모든 사이트에서 pwa를 생성하고 실행기 응용 프로그램으로 추가하는 방법을 설명하고 싶습니다. 일부 웹사이트는 PWA로 설치를 허용하지 않지만 유사한 애플리케이션을 원합니다. 1. ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.