Imported Upstream version 1.57.0
[platform/upstream/boost.git] / doc / html / boost_asio / reference / io_service / notify_fork.html
1 <html>
2 <head>
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">
11 </head>
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>
20 </tr></table>
21 <hr>
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>
24 </div>
25 <div class="section">
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>
29 <p>
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.
32         </p>
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>
35 </pre>
36 <p>
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
40           following a fork.
41         </p>
42 <p>
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>.
47         </p>
48 <h6>
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>
51         </h6>
52 <div class="variablelist">
53 <p class="title"><b></b></p>
54 <dl class="variablelist">
55 <dt><span class="term">event</span></dt>
56 <dd><p>
57                 A fork-related event.
58               </p></dd>
59 </dl>
60 </div>
61 <h6>
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>
64         </h6>
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>
69 <dd><p>
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.
72               </p></dd>
73 </dl>
74 </div>
75 <h6>
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>
78         </h6>
79 <p>
80           The following code illustrates how to incorporate the <code class="computeroutput"><span class="identifier">notify_fork</span><span class="special">()</span></code> function:
81         </p>
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>
93 </pre>
94 <h6>
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>
97         </h6>
98 <p>
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">-&gt;</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.
105         </p>
106 </div>
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 &#169; 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>)
112       </p>
113 </div></td>
114 </tr></table>
115 <hr>
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>
118 </div>
119 </body>
120 </html>