2011-06-14 7 views
3

저는 리눅스에서 PHP 스크립트와 C++ 데몬간에 통신하기 위해 명명 된 파이프를 사용하고 있습니다. 데몬은 스크립트가 호출되고 생성 될 때 명령을 처리하고 파이프를보고 감시합니다. 이 시스템은 작은 임베디드 장치이며 웹 서버와 데몬 만 실행됩니다.닫을 때 명명 된 파이프를 삭제합니다.

프로그램이 닫힐 때 명명 된 파이프를 삭제해야합니까, 아니면 파일 시스템에 남겨 둘 수 있습니까? 임베디드 디바이스는 종종 하드 셧다운을 얻습니다. 따라서 제대로 종료 될 때 제대로 닫히더라도 대부분의 경우 주변에 남아있게됩니다. 시스템을 재시작 할 때 파이프를 열면 알려지지 않은 데이터로 끝날 것인가? 그렇다면, 그냥 제거하고 다시 시작할 때마다 다시 만들어야합니까? 아니면 과장입니까?

답변

5

FIFO를 삭제하는 것은 깔끔하고 정돈 된 일이지만 그렇게하는 것은 중요하지 않습니다. 특히, 시스템을 재시작하면 FIFO가 비게됩니다.

따라서 프로그램이 FIFO의 존재를 받아 들여 누락 된 경우 생성하는 것이 가장 좋습니다. 그들이 깨끗하게 폐쇄되면, FIFO를 제거하는 것이 좋습니다.

+0

+1 생각했지만 확실하지 않았습니다. –

+0

감사합니다. 나는 파이프가 존재하지 않는다면 시작하고 파이프를 만들 때 점검 할 것입니다. 소멸자에 unlink()를 던져서 프로그램이 멋지게 종료되고 잘 호출되면 정리할 것입니다. – RedPeasant

0

저는 수년 동안 사용하지 않았지만 노드를 영원히 남겨 둘 수 있다고 확신하는 경우는 약 80 %입니다. 데이터가 커널 데이터 구조에 저장되기 때문에 부트 업시 비어있게됩니다.

관련 문제