프로세스 포크 분석;l

1438 단어

   
   
   
   
         ,         :

#include <stdio.h> #include <sys/types.h> #include <unistd.h> int main() { pid_t pid1; pid_t pid2; pid1= fork(); pid2= fork(); printf("pid1:%d, pid2:%d/n", pid1, pid2); }

이 프로그램에서 이 프로그램으로 실행되는 모든 프로세스가 끝날 때까지 다른 프로세스가 실행되지 않았습니다.
1. 이 프로그램을 실행한 후에 모두 몇 개의 프로세스를 실행할 것인지 말해 주세요.
2. 만약에 한 프로세스의 출력 결과가'pid1:1001, pid2:1002'이면 다른 프로세스의 출력 결과를 작성한다(프로세스의 실행 순서를 고려하지 않는다).
 
이 제목의 유일한 차이점은 이 프로그램이 두 번 연속 포크를 했다는 것이다. 그러면 결과는 어떻게 될까?
이 문제를 해결할 때 주의해야 할 점은 하나의 프로세스가 포크된 후에 메인 프로세스와 하위 프로세스가 계속 아래로 실행된다는 것이다. (만약 메인 프로세스나 하위 프로세스가 중도에 종료되지 않는다면) 따라서 위의 코드는 아래의 코드로 바꿀 수 있다.
 
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
int main()
{
	pid_t pid1;
	pid_t pid2;
	pid1= fork();
	if(pid1 == 0) // son
	{
		pid2= fork();
		if(pid2 = = 0) //son of son
		{
		
		}
	}
	pid2= fork();
	if(pid2 == 0) //the second son of root
	{

	}
	else //is the root
	
}
//만약 프로그램이 주석대로 실행된다면, 하위 프로세스가 만들어진 후에 부모 프로세스가 먼저 실행된다는 조건이 있다
//
//

좋은 웹페이지 즐겨찾기