해바

Lab #11 본문

System Programming

Lab #11

Bacha 2019. 11. 18. 12:27

두 개의 프로그램 parent.c(실행 파일 이름은 parent)와 child.c(child)를 다음과 같이 작성한다 :

  • parent에서는 자식 프로세스(child)를 fork()와 exec() 시스템 호출을 이용하여 시작한다.
  • parent에서 "parent: child initiated"라고 출력한다.
  • child에서는 30sec 동안 sleep() 한다.
  • 30sec가 되기 전에 parent에서 자식 프로세스에게 kill()을 사용하여 SIGTERM을 보낸다.
  • child가 terminate 된 후 parent에서 다음과 같이 출력한다 : "Parent: child terminated"

 

 

// parent.c
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <signal.h>

int main() {
	pid_t pid;
    
    if((pid = fork()) == -1) perror("fork");
    else if(pid == 0) execlp("child.out", "child.out", (char*) 0);
    else {
        printf("Parent: child initiated\n");
        sleep(5);			// 적당히 지정
        if(!kill(pid, SIGTERM)) perror("kill");
        printf("Parent: child terminated\n");
    }
    
    return 0;
}

 

// child.c
#include <stdio.h>

int main() {
	printf("Waiting 30 seconds...\n");
	sleep(30);
    
    /* 1초씩 보여주고 싶으면 이 코드로 변경
    for (int i = 1; i <= 30; i++) {
    	printf("%d...\n", i);
        sleep(1);
    }*/
    
    return 0;
}

 

 

컴파일 :

%gcc parent.c

%gcc child.c -o child.out

 

실행 :

%./a.out

'System Programming' 카테고리의 다른 글

Lab #13  (0) 2019.11.18
Lab #12  (0) 2019.11.18
Lab #10  (0) 2019.11.18
Lab #9  (0) 2019.11.18
LAB #8  (0) 2019.11.18
Comments