linux system 함수 예제

포크 함수는 exec 함수 중 하나를 호출하여 다른 프로그램을 실행하도록 하는 새 프로세스(자식)를 만드는 것입니다. 프로세스가 exec 함수 중 하나를 호출하면 해당 프로세스가 새 프로그램으로 완전히 대체되고 새 프로그램이 주 함수에서 실행을 시작합니다. 새 프로세스가 만들어지지 않으므로 프로세스 ID는 exec에서 변경되지 않습니다. exec은 텍스트, 데이터, 힙 및 스택 세그먼트와 같은 현재 프로세스를 디스크의 새로운 프로그램으로 바꿉니다. system() 요청을 처리하기 위해 암시적으로 새 프로세스를 포크하고 처음에 포크한 자식 프로세스를 통해 얻은 값을 반환합니다. 시스템의 기본 셸을 사용하여 작업을 수행합니다. 언급 했 듯이, 시스템 () SIGINT와 SIGQUIT무시 합니다. 이렇게 하면 자식의 종료 상태를 확인하기 위해 주의를 기울이지 않는 한 루프에서 호출하는 프로그램이 중단되지 않을 수 있습니다. 예를 들어 POSIX popen() 함수는 명령 프로세서도 호출합니다. 시스템과 exec 가족 명령의 차이점은 무엇입니까? 특히 나는 그들 중 어느 것이 일하는 자식 프로세스를 만드는지 알고 싶어? JonSpencer 대답은 괜찮습니다.

따라서 두 시스템(„일시 중지”) 및 cin.get()이 실제로 키를 누를 때까지 대기를 수행하고 있지만 cin.get() 은 OS에 종속되지 않으며 위에서 언급한 단계를 따르지 않고 프로그램을 일시 중지합니다. 마찬가지로 C 언어에서 getchar()는 „키를 눌러 계속…”라는 메시지를 인쇄하지 않고 프로그램을 일시 중지하는 데 사용할 수 있습니다. 시스템 (ls-l) 에코 „1 2 3″// 이것은 부모 PID와 다르기 때문에 시스템 자식 프로세스를 완료 한 후에 실행됩니다. exec 함수는 성공하면 현재 실행 중인 프로세스 이미지를 대체하며 이전에 fork()로 직접 만들지 않는 한 자식이 만들어지지 않습니다. system() 함수는 자식 프로세스를 포크하고 제공된 명령이 실행이 완료되거나 오류가 발생하면 반환됩니다. system() 다른 자식의 대기 상태에는 영향을 미치지 않습니다.