자식 프로세스에서 반짝임 명령 줄을 실행하려고합니다. 이런 예 :linux fork-execl, 실행 된 프로세스가 좀비가됩니다
10020 pts/1 Z+ 0:00 [twinkle] <defunct>
10040 pts/1 Z+ 0:00 [twinkle] <defunct>
10053 pts/1 Z+ 0:00 [twinkle] <defunct>
10064 pts/1 Z+ 0:00 [twinkle] <defunct>
10097 pts/1 Z+ 0:00 [twinkle] <defunct>
10108 pts/1 Z+ 0:00 [twinkle] <defunct>
10130 pts/1 Z+ 0:00 [twinkle] <defunct>
제가 신호 (SIGCHLD, SIG_IGN)을 설정하려고;
int hangup() {
write_on_display("line3", " ");
write_on_display("hide_icon", "DIALTONE");
write_on_display("hide_icon", "BACKLIGHT");
int pid = fork();
if (pid == 0) {
int res = execl("/usr/bin/twinkle", " ", "--immediate", "--cmd",
"answerbye", (char *) NULL);
_exit(0);
} else {
perror("hangup");
return 0;
}
return 1;
}
을하지만 반짝임 좀비진다 하지만 성공하지 못했습니다. 실제로 나는 반짝 반짝 빛나기 전에 자식 프로세스가 죽었다고 생각합니다. 같은 명령 줄에서
실행 반짝 :
twinkle --immediate --call 100
좀비가되지 않습니다 - 반짝 제대로 닫습니다. 내가 누락 된 부분은 무엇입니까?
그냥 (!) 참고 : 'execl'는 오류가 발생하지 않는 한 IIRC, execl''후 코드가 * * 실행되지 않습니다. – Jite
@Jite, 맞습니다. 'execl()'이 성공하면'exit (0);'_disappears_가 나타난다. – hmjd