2011-04-06 6 views
0

아이콘을 클릭하고 init을 사용하여 새로운 프로세스를 만드는 과정에 관심이 있습니다. 나는 bash가 자식 일 때 응용 프로그램을 시작할 수 있지만 Bash는 fork 명령을 실행한다는 것을 알고 있습니까? X Windows 시스템도 똑같은 기능을합니까? Gnome 패널 실행기가 응용 프로그램 이름을 BASH로 전달합니까? "프로세스를 시작한 명령 줄"에 대한 정보를 얻는 방법은 무엇입니까?Linux가 응용 프로그램을 시작하는 방법과 방법은 무엇입니까

답변

2

리눅스에서는 fork()으로 새 프로세스를 생성하기 때문에 산란 프로세스에 관심이있는 모든 사람이 그 길을 걸어 간다.

BASH는 fork()을 사용하고 새로운 프로세스의 입력 및 출력 구성을 처리하기 위해 다른 시스템 호출 (dup2(), pipe() 등의 행을 따라 추측)을 사용합니다. 매개 변수와 환경 변수를 전달합니다. 그런 다음 최종 exec()은 두 번째 프로그램으로 실행을 넘깁니다.

그러나 BASH를 사용하여 프로세스를 생성 할 필요는 없습니다. 모든 프로세스는 fork()exec() 일 수 있습니다. 15 줄 미만의 C 코드에서 직접 프로그램 시작 관리자를 만들 수 있습니다.

관련 문제