2012-04-29 4 views
2

FreeBSD를위한 데몬 프로그램 작성을 고려 중입니다. 그러나 나는 그것을 한 번도 해 본 적이 없으며,보기에는 매우 까다 롭습니다.FreeBSD 데몬 라이브러리

내가 포함 할 수있는 라이브러리가 있습니까? 그런 다음 데몬에 특정한 것들을 쓸 수 있습니까?

답변

2

의견이 아닌 답변을 게시 해 주셔서 죄송합니다. 후자를 수행 할 충분한 평판이 없습니다.

FreeBSD의 libc에서 제공되는 daemon (3)을 살펴볼 수 있습니다. 표준 파일 디스크립터를 닫고, SIGHUP이 아무런 영향을 미치지 않도록 설정한다. 소스 코드는 여기에 있습니다 :

http://svnweb.freebsd.org/base/head/lib/libc/gen/daemon.c?view=markup

또한 man 페이지가있다. (조심해라. wrapper 프로그램 daemon (1)도있다.) 또한 휴대용이 아닙니다 (libbsd에서 사용 가능할 수도 있지만 확실하지는 않습니다).

FreeBSD는 libutil (다시 말해서 휴대용이 아닙니다)을 제공합니다. 다른 것들 중에서 PID 파일 처리를위한 pidfile _ *() 함수를 제공합니다.이 함수는 데몬 작성에 유용합니다. 다른 고려 사항이 있지만 시작하는 데 도움이 될 수 있습니다. 특정 질문이 없으면 훨씬 더 말할 수 없습니다.

+0

답장을 보내 주셔서 감사합니다. 매우 도움이되었습니다. 더 구체적인 일들에 관해서는 - 나는 또한 터미널이나 cron으로부터 메시지를 보낼 수 있기를 원한다. 이것은 전송 - 데몬 (전송 - 원격에 의해 전달되는 것, 나는 믿는다)과 같은 것이다. – Ibolit

+0

데몬과 클라이언트 프로세스가 항상 동일한 시스템에서 실행된다는 것을 알고 있다면 최선의 방법은 유닉스 도메인 소켓을 사용하는 것입니다. 아이디어는 데몬이 어떤 표준 이름 (예 : $ {HOME} /. daemon/socket 또는/var/run에있는 것)으로 시작시 소켓을 생성하고 클라이언트가이 소켓을 찾도록하는 것입니다 . 이 자료는 꽤 표준 적입니다. 다음은 빠른 자습서입니다. beej.us/guide/bgipc/output/html/multipage/unixsock.html 전송은 IP 소켓을 사용하며 일부 RPC 라이브러리가 있으므로 좀 더 복잡합니다. syslogd는 예제를 찾을 수있는 좋은 장소입니다. –

+0

(아마도 유닉스 도메인 소켓은 파일 시스템의 객체이기 때문에 IP 소켓과 마찬가지로 URL + 포트 대신 파일 이름을 사용하여 찾을 수 있습니다. 그들은 모두 같은 인터페이스 인 socket (), bind() 등) –