1 / 8

p 129 char * const argin[] = {“command”, “with”, “arguments”, (char *)0};

p 129 char * const argin[] = {“command”, “with”, “arguments”, (char *)0}; execvp (“prog”, argin) argc == 3; argv[0] == “command”; argv[1] == “with”; argv[2] == “arguments”; argv[3] == (char *)0 ( 예제 ) myecho.c, test1.c. exec 과 fork 를 함께 사용

layne
Download Presentation

p 129 char * const argin[] = {“command”, “with”, “arguments”, (char *)0};

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. p 129 • char * const argin[] = {“command”, “with”, “arguments”, (char *)0}; • execvp (“prog”, argin) • argc == 3; • argv[0] == “command”; • argv[1] == “with”; • argv[2] == “arguments”; • argv[3] == (char *)0 • (예제) myecho.c, test1.c

  2. exec과 fork를 함께 사용 • wait – 한 프로세스가 자식이 하고 있는 일을 완료할 때를 기다리게 함 • (예제) p131 – test2.c • p133 • docommand • 명령을 직접 수행시키지 않고 중간 매개자로서 표준쉘을 호출 • 쉘을 호출할 때 사용되는 –c • ;수행해야 할 명령을 표준 입력 대신 바로 뒤의 문자열 인수로부터 취하도록 함. • (예제) p134 – test3.c

  3. 5.5 상속된 자료와 파일 기술자 • 부모 프로세스가 가지고 있던 변수의 값들은 자식 프로세스에게 그대로 전달 • 부모 프로세스에서 개방된 파일은 자식 프로세스에서도 개방 • 자식은 각 파일과 연관하여 자신의 파일 기술자의 복제를 유지 • 각 파일의 읽기-쓰기 포인터가 부모와 자식 사이에서 공유 • (예제) p136 – test4.c

  4. 5.5.2 exec과 개방된 파일 • 원래의 프로그램에서 개방된 파일들은 exec가 호출되어서 개방상태 유지 • close-on-exec 플래그가 on이면 exec 호출 시 파일이 close • 예제 – p138

  5. 자신의 자식 프로세스가 종료할 때까지 대기한다. (p140, p141) 자식 프로세스를 가진 부모 프로세스가 wait를 호출하면 • 자식 프로세스가 종료할 때까지 실행이 중단된다. (대기 상태) • 자식 프로세스가 종료하면 이를 처리한다. • wait 호출 이전에 자식이 종료했다면 대기 상태가 되지 않고 처리

  6. 프로세스 식별번호로 지정한 자식 프로세스가 종료할 때까지 대기 wait와 waitpid의 차이점 • wait는 자식 프로세스 중 가장 먼저 종료되는 것을 처리해주나, waitpid는 PID로 지정한 자식 프로세스의 종료만 처리해준다. • (예제 – test5.c)

  7. 좀비 프로세스 (zombie process) 좀비와 고아 프로세스의 관리는 결국 시스템의 init 프로세스로 넘겨진다. • init 프로세스가 새로운 부모가 된다. 부모 프로세스가 wait를 수행하지 않고 있는 상태에서 자식이 종료 • 자식 프로세스의 종료를 부모 프로세스가 처리해주지 않으면 자식 프로세스는 좀비 프로세스가 된다. • 좀비 프로세스는 CPU, Memory 등의 자원을 사용하지 않으나, 커널의 작업 리스트에는 존재한다. 고아 프로세스 (orphan process) • 하나 이상의 자식 프로세스가 수행되고 있는 상태에서 부모가 먼저 종료 • 부모 프로세스가 수행 중인 자식 프로세스를 기다리지 않고 먼저 종료 init 프로세스

  8. smallsh : 명령 처리기 • (실습) • 자식이 오늘 날짜를 묻는다 • - execl(“/bin/echo”, “echo”, “Today’s”, “date”, “is:”, 0) • 자식 프로세스가 완전히 끝날 때까지 대기 • 날짜 출력 • args[0] = “date”; • args[1] = “+%A, %B %d, %Y”; • args[2] = NULL; • execv(“/bin/date”, args);

More Related