의 PID 반환 후 부모를 죽이고, 내 수술 시스템 클래스에 대한이 문제를 해결해야한다 :C 포크, 나는 C에 새로 온 사람과 나는 지난 2 주 포크에 대해 조사했습니다
"당신은 포크를 사용하여 "heavy weight"프로세스를 작성해야합니다. 그러면 첫 번째 프로세스는 상위 ID를 반환 할 때까지 대기해야하며 그 다음 상위 프로세스를 종료해야합니다. "
지시 사항은 다음과 같습니다. 꽤 혼란, 이것은 지금까지 내 코드입니다 (내가 말했듯이, 나는 C를 처음부터 연구했기 때문에 그냥 조사했습니다) 내 문제는 부모가 자식 프로세스가 그 id를 반환하기를 기다리지도 않는 것처럼 보입니다. 그 이후로 아이가 p를 죽이고 있기 때문에 arent, 그래서 나는 자식 프로세스를 만들고 있다고 생각한다. 그리고 실행될 때, 결국 부모를 죽이게하고, 부모에게 자식 실행을 기다리지 않게한다. (내가 생각하는 부분이 지침에 대해 혼란 스럽습니다.) 포크와 프로세스에 대해 더 알고 싶습니다. 뒤에있는 논리처럼 코딩 할 때 더 확신 할 수 있습니다. 감사합니다.
#include <sys/types.h>
#include <wait.h>
#include <unistd.h>
#include <stdio.h>
int main() {
pid_t idProceso;
int childState;
idProceso = fork();
if (idProceso == 0){
printf ("child id : %d. parent id %d\n",
getpid(), getppid());
int parent = getppid();
kill(parent, SIGKILL);
printf ("dead parent"); // not sure about it ??
_exit();
}
if(idProceso > 0){
sleep (1);
printf ("parent id : %d. child id %d\n",
getpid(), idProceso);
wait (&childState);
}
return 0;
}
사실 두 번 읽은 후에도 그 문장은 나에게 이해가되지 않습니다. 모든 경우에 나는 이미 죽은 과정이 종말이라고 생각할 수 있습니다. – drahnr
나는 네가해야 할 일을 이해하지 못한다. 그러나 부모가 기다리지 않는 이유는'sleep'을 시작하기 때문이다. 그러나 그 아이는 즉시 그것을 죽일 것이기 때문에 그렇게한다. – teppic
당신은 둘 다 옳다. 나는 그 문장이 혼란 스럽다고 생각한다. 그러나 그것은 교사가 우리에게 준 방식이다. - 프로세스 만들기 - 자식 프로세스 만들기 - 부모가 자식을 기다린다 - 자식이 부모를 죽인다. (이것은 내가 혼란스러워하는 부분이다.) 그리고 완료된다. – dlvx