여기에 문제가 있습니다 : 클라이언트로부터 요청을 받고, 요청으로 인해 (일부 모듈에서) 함수를 실행하는 데몬을 가지고 있습니다. 클라이언트. fork() 후에 STDIN, STDOUT 및 STDERR을 닫습니다. 하나의 기능은 dmesg를 검사하는 것입니다. 이를 위해 을 통해 dmesg 출력을 엽니 다 (DMESG, "/ bin/dmesg |"). 필자는 함수가 끝난 후 자동으로 닫힐 것이라고 생각했기 때문에이 fh를 읽은 후에이 fh를 닫지 않습니다. 그러나 이것은 일어나지 않으며 dmesg를 호출 할 때마다 좀비가 생깁니다.Perl : close()없이 open()을 통해 좀비 생성하기
How can I reinitialize Perl's STDIN/STDOUT/STDERR? "다시 열지 말고 STDOUT을 닫을 때의 문제점은 다른 파일을 열면 fd가 0,1 또는 2가되어 나중에 STDOUT을 다시 열 수 없게된다는 것입니다." 에 의해 jmanning2k 그리고 나는 그것과 관련이 있다고 생각하지만 실제로 얻지는 않습니다. 나는 누군가가 그것을 나에게 설명 할 수 있기를 바란다.
나는이 문제를 피할 수 있음을 안다. qx()를 통해 dmesg를 호출하여; 또는 간단히 fh를 닫으면 좀비가 어디에서 왔는지 이해하고 싶습니다. 내가 그것을 완성 기능 후 자동으로 닫 것이라고 생각했기 때문에
감사합니다. 그것을 설명하기위한 것입니다. – olo