3 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
4 <title>io_service::notify_fork</title>
5 <link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
6 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
7 <link rel="home" href="../../../boost_asio.html" title="Boost.Asio">
8 <link rel="up" href="../io_service.html" title="io_service">
9 <link rel="prev" href="io_service/overload2.html" title="io_service::io_service (2 of 2 overloads)">
10 <link rel="next" href="poll.html" title="io_service::poll">
12 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
13 <table cellpadding="2" width="100%"><tr>
14 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
15 <td align="center"><a href="../../../../../index.html">Home</a></td>
16 <td align="center"><a href="../../../../../libs/libraries.htm">Libraries</a></td>
17 <td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
18 <td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
19 <td align="center"><a href="../../../../../more/index.htm">More</a></td>
22 <div class="spirit-nav">
23 <a accesskey="p" href="io_service/overload2.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../io_service.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../boost_asio.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="poll.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
26 <div class="titlepage"><div><div><h4 class="title">
27 <a name="boost_asio.reference.io_service.notify_fork"></a><a class="link" href="notify_fork.html" title="io_service::notify_fork">io_service::notify_fork</a>
28 </h4></div></div></div>
30 <a class="indexterm" name="idp171472736"></a>
31 Notify the <a class="link" href="../io_service.html" title="io_service"><code class="computeroutput"><span class="identifier">io_service</span></code></a> of a fork-related event.
33 <pre class="programlisting"><span class="keyword">void</span> <span class="identifier">notify_fork</span><span class="special">(</span>
34 <span class="identifier">boost</span><span class="special">::</span><span class="identifier">asio</span><span class="special">::</span><span class="identifier">io_service</span><span class="special">::</span><span class="identifier">fork_event</span> <span class="identifier">event</span><span class="special">);</span>
37 This function is used to inform the <a class="link" href="../io_service.html" title="io_service"><code class="computeroutput"><span class="identifier">io_service</span></code></a> that the process is
38 about to fork, or has just forked. This allows the <a class="link" href="../io_service.html" title="io_service"><code class="computeroutput"><span class="identifier">io_service</span></code></a>, and the services it
39 contains, to perform any necessary housekeeping to ensure correct operation
43 This function must not be called while any other <a class="link" href="../io_service.html" title="io_service"><code class="computeroutput"><span class="identifier">io_service</span></code></a> function, or any function
44 on an I/O object associated with the <a class="link" href="../io_service.html" title="io_service"><code class="computeroutput"><span class="identifier">io_service</span></code></a>, is being called in
45 another thread. It is, however, safe to call this function from within
46 a completion handler, provided no other thread is accessing the <a class="link" href="../io_service.html" title="io_service"><code class="computeroutput"><span class="identifier">io_service</span></code></a>.
49 <a name="boost_asio.reference.io_service.notify_fork.h0"></a>
50 <span class="phrase"><a name="boost_asio.reference.io_service.notify_fork.parameters"></a></span><a class="link" href="notify_fork.html#boost_asio.reference.io_service.notify_fork.parameters">Parameters</a>
52 <div class="variablelist">
53 <p class="title"><b></b></p>
54 <dl class="variablelist">
55 <dt><span class="term">event</span></dt>
62 <a name="boost_asio.reference.io_service.notify_fork.h1"></a>
63 <span class="phrase"><a name="boost_asio.reference.io_service.notify_fork.exceptions"></a></span><a class="link" href="notify_fork.html#boost_asio.reference.io_service.notify_fork.exceptions">Exceptions</a>
65 <div class="variablelist">
66 <p class="title"><b></b></p>
67 <dl class="variablelist">
68 <dt><span class="term">boost::system::system_error</span></dt>
70 Thrown on failure. If the notification fails the <a class="link" href="../io_service.html" title="io_service"><code class="computeroutput"><span class="identifier">io_service</span></code></a> object should
71 no longer be used and should be destroyed.
76 <a name="boost_asio.reference.io_service.notify_fork.h2"></a>
77 <span class="phrase"><a name="boost_asio.reference.io_service.notify_fork.example"></a></span><a class="link" href="notify_fork.html#boost_asio.reference.io_service.notify_fork.example">Example</a>
80 The following code illustrates how to incorporate the <code class="computeroutput"><span class="identifier">notify_fork</span><span class="special">()</span></code> function:
82 <pre class="programlisting"><span class="identifier">my_io_service</span><span class="special">.</span><span class="identifier">notify_fork</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">asio</span><span class="special">::</span><span class="identifier">io_service</span><span class="special">::</span><span class="identifier">fork_prepare</span><span class="special">);</span>
83 <span class="keyword">if</span> <span class="special">(</span><span class="identifier">fork</span><span class="special">()</span> <span class="special">==</span> <span class="number">0</span><span class="special">)</span>
84 <span class="special">{</span>
85 <span class="comment">// This is the child process.</span>
86 <span class="identifier">my_io_service</span><span class="special">.</span><span class="identifier">notify_fork</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">asio</span><span class="special">::</span><span class="identifier">io_service</span><span class="special">::</span><span class="identifier">fork_child</span><span class="special">);</span>
87 <span class="special">}</span>
88 <span class="keyword">else</span>
89 <span class="special">{</span>
90 <span class="comment">// This is the parent process.</span>
91 <span class="identifier">my_io_service</span><span class="special">.</span><span class="identifier">notify_fork</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">asio</span><span class="special">::</span><span class="identifier">io_service</span><span class="special">::</span><span class="identifier">fork_parent</span><span class="special">);</span>
92 <span class="special">}</span>
95 <a name="boost_asio.reference.io_service.notify_fork.h3"></a>
96 <span class="phrase"><a name="boost_asio.reference.io_service.notify_fork.remarks"></a></span><a class="link" href="notify_fork.html#boost_asio.reference.io_service.notify_fork.remarks">Remarks</a>
99 For each service object <code class="computeroutput"><span class="identifier">svc</span></code>
100 in the <a class="link" href="../io_service.html" title="io_service"><code class="computeroutput"><span class="identifier">io_service</span></code></a>
101 set, performs <code class="computeroutput"><span class="identifier">svc</span><span class="special">-></span><span class="identifier">fork_service</span><span class="special">();</span></code>.
102 When processing the fork_prepare event, services are visited in reverse
103 order of the beginning of service object lifetime. Otherwise, services
104 are visited in order of the beginning of service object lifetime.
107 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
108 <td align="left"></td>
109 <td align="right"><div class="copyright-footer">Copyright © 2003-2014 Christopher M. Kohlhoff<p>
110 Distributed under the Boost Software License, Version 1.0. (See accompanying
111 file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
116 <div class="spirit-nav">
117 <a accesskey="p" href="io_service/overload2.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../io_service.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../boost_asio.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="poll.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>