Повышаю. Asio поддерживает программы, использующие системный вызов<fork()
>. При условии выполнения программы звонков<io_service.notify_fork()
>в соответствующее время, повышается. Asio воссоздает любые внутренние дескрипторы файлов (например, дескриптор «самообман», используемый для пробуждения реактора). Уведомление обычно осуществляется следующим образом:
io_service_.notify_fork(boost::asio::io_service::fork_prepare);
if (fork() == 0)
{
io_service_.notify_fork(boost::asio::io_service::fork_child);
...
}
else
{
io_service_.notify_fork(boost::asio::io_service::fork_parent);
...
}
Определяемые пользователем сервисы также могут быть форк-осознаны путем переопределения виртуальной функции<io_service::service::fork_service()
>.
Обратите внимание, что любые дескрипторы файлов доступны через Boost. Публичный API Asio (например, дескрипторы, лежащие в основе<basic_socket<>
>,<posix::stream_descriptor
>и т.д.) не изменяются во время вилки. Обязанностью программы является управление ими по мере необходимости.
io_service::notify_fork(),io_service::fork_event,io_service::service::fork_service(),Примеры вилки.