하... fork하고 시그널, kill() 때문에요 ㅠㅠ
./fork_kill 10
자녀가 자녀를 낳는 방식으로 주어진 숫자만큼 프로세스를 생성, process # is created. 출력
마지막으로 생성된 프로세스가 차례로 최상위 부모까지 모두 kill
죽는 프로세스는 signal을 받아 “pid #, ppid # is kill by my decendent”를 프린트하고 종료
이렇게 만들라고 하는데...
#include
#include
#include
#include
int main()
{
int kill (int pid, int signo);
int pid;
int l,ans;
printf("pid: %d\n", getpid());
printf("Type a generation number: ");
scanf("%d", &l);
ans = l;
pid = fork();
while (l-->0 && pid == 0) {
pid = fork();
if (pid == 0)
printf("%dth generation, ppid %d, pid: %d\n",ans-l, (int)getppid(), (int)getpid());
}
sleep(1);
kill(pid, SIGKILL);
}
이건 입력한 숫자만큼 자식프로세스 생성하는건데 뭐 아무리 건드려도 답이 안나오네요
그리고
./control tlimit 20 ls –al 을 수행할 수 있도록 control.c를 수정하라.
이렇게 대있는데
control.c 는
#include
#include
/* 시그널을 이용하여 자식 프로세스들을 제어한다. */
int main( )
{
int pid1, pid2;
pid1 = fork( );
if (pid1 == 0) {
while (1) {
sleep(1);
printf("프로세스 [1] 실행\n");
}
}
pid2 = fork( );
if (pid2 == 0) {
while (1) {
sleep(1);
printf("프로세스 [2] 실행\n");
}
}
sleep(2);
kill(pid1, SIGSTOP);
sleep(2);
kill(pid1, SIGCONT);
sleep(2);
kill(pid2, SIGSTOP);
sleep(2);
kill(pid2, SIGCONT);
sleep(2);
kill(pid1, SIGKILL);
kill(pid2, SIGKILL);
}
이거구요 ㅠㅠ
돌아버리겠어요 도와주세용
댓글 달기