728x90
반응형
포크 (Fork)
Boost.Asio는 fork() 시스템 호출을 사용하는 프로그램을 지원한다. 프로그램이 적절한 시점에 io_context.notify_fork()를 호출할 경우, Boost.Asio는 모든 내부 파일 디스크립터(예: reactor를 깨우는 데 사용되는 "self-pipe-trick" 디스크립터)를 다시 만들 것이다. 알림은 일반적으로 다음과 같이 수행된다:
io_context_.notify_fork(boost::asio::io_context::fork_prepare); if (fork() == 0) { io_context_.notify_fork(boost::asio::io_context::fork_child); ... } else { io_context_.notify_fork(boost::asio::io_context::fork_parent); ... }
사용자 정의 서비스는 io_context::service::notify_fork() 가상 함수를 재정의하여 fork를 인식하도록 만들 수 있다.
Boost.Asio의 공용 API (예: basic_socket<>, posix::stream_descriptor 등의 기저 디스크립터)를 통해 접근할 파일 디스크립터는 fork 중에 변경되지 않는다. 필요에 따라 이를 관리하는 것은 프로그램의 책임이다.
더 보기
io_context::notify_fork(), io_context::fork_event, io_context::service::notify_fork(), Fork example.
728x90
반응형
'Boost C++ Libraries > Boost.Asio' 카테고리의 다른 글
Boost.Asio 개요 - Windows 전용 기능 - 스트림-지향 핸들 (0) | 2020.12.12 |
---|---|
Boost.Asio 개요 - Windows 전용 기능 (0) | 2020.12.12 |
Boost.Asio - POSIX 전용 기능 - 스트림-지향 파일 설명자 (0) | 2020.12.12 |
Boost.Asio 개요 - POSIX 전용 기능 - UNIX 도메인 소켓 (0) | 2020.12.11 |
Boost.Asio 개요 - POSIX 전용 기능 (0) | 2020.12.11 |