<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.18"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Crashpad: test/multiprocess_exec.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="crashpad_doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Crashpad
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.18 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="dir_13e138d54eb8818da29c3992edef070a.html">test</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#namespaces">Namespaces</a> &#124;
<a href="#define-members">Macros</a> &#124;
<a href="#func-members">Functions</a> &#124;
<a href="#var-members">Variables</a>  </div>
  <div class="headertitle">
<div class="title">multiprocess_exec.h File Reference</div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;string&gt;</code><br />
<code>#include &lt;vector&gt;</code><br />
<code>#include &quot;base/files/file_path.h&quot;</code><br />
<code>#include &quot;base/macros.h&quot;</code><br />
<code>#include &quot;build/build_config.h&quot;</code><br />
<code>#include &quot;test/multiprocess.h&quot;</code><br />
<code>#include &quot;test/process_type.h&quot;</code><br />
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1test_1_1internal_1_1AppendMultiprocessTest.html">crashpad::test::internal::AppendMultiprocessTest</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Helper class used by <a class="el" href="multiprocess__exec_8h.html#a62b5891d00df060b50ee76f74b1156b3" title="Registers a function that can be invoked as a child process by MultiprocessExec.">CRASHPAD_CHILD_TEST_MAIN()</a> to insert a child function into the global mapping.  <a href="classcrashpad_1_1test_1_1internal_1_1AppendMultiprocessTest.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcrashpad_1_1test_1_1MultiprocessExec.html">crashpad::test::MultiprocessExec</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Manages an <code>exec()</code>-based multiprocess test.  <a href="classcrashpad_1_1test_1_1MultiprocessExec.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:namespacecrashpad"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacecrashpad.html">crashpad</a></td></tr>
<tr class="memdesc:namespacecrashpad"><td class="mdescLeft">&#160;</td><td class="mdescRight">The main namespace. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:namespacecrashpad_1_1test"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacecrashpad_1_1test.html">crashpad::test</a></td></tr>
<tr class="memdesc:namespacecrashpad_1_1test"><td class="mdescLeft">&#160;</td><td class="mdescRight">The testing namespace, for use in test code only. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:a62b5891d00df060b50ee76f74b1156b3"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="multiprocess__exec_8h.html#a62b5891d00df060b50ee76f74b1156b3">CRASHPAD_CHILD_TEST_MAIN</a>(test_main)</td></tr>
<tr class="memdesc:a62b5891d00df060b50ee76f74b1156b3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Registers a function that can be invoked as a child process by MultiprocessExec.  <a href="multiprocess__exec_8h.html#a62b5891d00df060b50ee76f74b1156b3">More...</a><br /></td></tr>
<tr class="separator:a62b5891d00df060b50ee76f74b1156b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a267cf8ce376c3cfa6203e6986aa331af"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><b>crashpad::test::internal::CheckedInvokeMultiprocessChild</b> (const std::string &amp;test_name)</td></tr>
<tr class="memdesc:a267cf8ce376c3cfa6203e6986aa331af"><td class="mdescLeft">&#160;</td><td class="mdescRight">Used to run a child test function by name, registered by <a class="el" href="multiprocess__exec_8h.html#a62b5891d00df060b50ee76f74b1156b3" title="Registers a function that can be invoked as a child process by MultiprocessExec.">CRASHPAD_CHILD_TEST_MAIN()</a>.  <a href="multiprocess__exec_8cc.html#a267cf8ce376c3cfa6203e6986aa331af">More...</a><br /></td></tr>
<tr class="separator:a267cf8ce376c3cfa6203e6986aa331af"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:aec28b7ccaf21ebed92786858066c358f"><td class="memItemLeft" align="right" valign="top"><a id="aec28b7ccaf21ebed92786858066c358f"></a>
constexpr char&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="multiprocess__exec_8h.html#aec28b7ccaf21ebed92786858066c358f">crashpad::test::internal::kChildTestFunction</a> [] = &quot;--child-test-function=&quot;</td></tr>
<tr class="memdesc:aec28b7ccaf21ebed92786858066c358f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Command line argument used to indicate that a child test function should be run. <br /></td></tr>
<tr class="separator:aec28b7ccaf21ebed92786858066c358f"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a id="a62b5891d00df060b50ee76f74b1156b3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a62b5891d00df060b50ee76f74b1156b3">&#9670;&nbsp;</a></span>CRASHPAD_CHILD_TEST_MAIN</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define CRASHPAD_CHILD_TEST_MAIN</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">test_main</td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">  <span class="keywordtype">int</span> test_main();                                                \</div>
<div class="line">  namespace {                                                     \</div>
<div class="line">  ::crashpad::test::internal::AppendMultiprocessTest              \</div>
<div class="line">      AddMultiprocessTest##_##test_main(#test_main, (test_main)); \</div>
<div class="line">  } <span class="comment">/* namespace */</span>                                               \</div>
<div class="line">  int test_main()</div>
</div><!-- fragment -->
<p>Registers a function that can be invoked as a child process by MultiprocessExec. </p>
<p>Used as:</p>
<div class="fragment"><div class="line"><a class="code" href="multiprocess__exec_8h.html#a62b5891d00df060b50ee76f74b1156b3">CRASHPAD_CHILD_TEST_MAIN</a>(MyChildTestBody) {</div>
<div class="line">   ... child body ...</div>
<div class="line">}</div>
</div><!-- fragment --><p>In the main (parent) test body, this function can be run in a child process via MultiprocessExec::SetChildTestMainFunction(). </p>

</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a id="a267cf8ce376c3cfa6203e6986aa331af"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a267cf8ce376c3cfa6203e6986aa331af">&#9670;&nbsp;</a></span>CheckedInvokeMultiprocessChild()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int crashpad::test::internal::CheckedInvokeMultiprocessChild </td>
          <td>(</td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>test_name</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Used to run a child test function by name, registered by <a class="el" href="multiprocess__exec_8h.html#a62b5891d00df060b50ee76f74b1156b3" title="Registers a function that can be invoked as a child process by MultiprocessExec.">CRASHPAD_CHILD_TEST_MAIN()</a>. </p>
<dl class="section return"><dt>Returns</dt><dd>The exit code of the child process after running the function named by <em>test_name</em>. Aborts with a CHECK() if <em>test_name</em> wasn't registered. </dd></dl>

</div>
</div>
</div><!-- contents -->
<div class="ttc" id="amultiprocess__exec_8h_html_a62b5891d00df060b50ee76f74b1156b3"><div class="ttname"><a href="multiprocess__exec_8h.html#a62b5891d00df060b50ee76f74b1156b3">CRASHPAD_CHILD_TEST_MAIN</a></div><div class="ttdeci">#define CRASHPAD_CHILD_TEST_MAIN(test_main)</div><div class="ttdoc">Registers a function that can be invoked as a child process by MultiprocessExec.</div><div class="ttdef"><b>Definition:</b> multiprocess_exec.h:70</div></div>
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.18
</small></address>
</body>
</html>
