"Fossies" - the Fresh Open Source Software Archive

Member "dmd2/html/d/phobos/std_process.html" (20 Nov 2020, 174973 Bytes) of package /linux/misc/dmd.2.094.2.linux.tar.xz:


The requested HTML page contains a <FORM> tag that is unusable on "Fossies" in "automatic" (rendered) mode so that page is shown as HTML source code syntax highlighting (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file.

    1 
    2 <!DOCTYPE html>
    3 <html lang="en-US">
    4 <!--
    5     Copyright (c) 1999-2020 by the D Language Foundation
    6     All Rights Reserved.
    7     https://dlang.org/foundation_overview.html
    8   -->
    9 <head>
   10 <meta charset="utf-8">
   11 <meta name="keywords" content="D programming language">
   12 <meta name="description" content="D Programming Language">
   13 <title>std.process - D Programming Language</title>
   14 
   15 <link rel="stylesheet" href="../css/codemirror.css">
   16 <link rel="stylesheet" href="../css/style.css">
   17 <link rel="stylesheet" href="../css/print.css" media="print">
   18 <link rel="shortcut icon" href="../favicon.ico">
   19 <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=0.1, maximum-scale=10.0">
   20 
   21 </head>
   22 <body id='std.process' class='std'>
   23 <script type="text/javascript">document.body.className += ' have-javascript'</script>
   24 <div id="top"><div class="helper"><div class="helper expand-container">    <div class="logo"><a href=".."><img id="logo" alt="D Logo" src="../images/dlogo.svg"></a></div>
   25     <a href="../menu.html" title="Menu" class="hamburger expand-toggle"><span>Menu</span></a>
   26     
   27 <div id="cssmenu"><ul>    <li><a href='https://tour.dlang.org'><span>Learn</span></a></li>
   28     <li class='expand-container'><a class='expand-toggle' href='../documentation.html'><span>Documentation</span></a>
   29       
   30 <ul class='expand-content'>    <li><a href='../spec/spec.html'>Language Reference</a></li>
   31     <li><a href='../phobos/index.html'>Library Reference</a></li>
   32     <li><a href='../dmd.html'>Command-line Reference</a></li>
   33     <li class="menu-divider"><a href='../comparison.html'>Feature Overview</a></li>
   34     <li><a href='../articles.html'>Articles</a></li>
   35  </ul></li>
   36     <li><a href='../download.html'><span>Downloads</span></a></li>
   37     <li><a href='https://code.dlang.org'><span>Packages</span></a></li>
   38     <li class='expand-container'><a class='expand-toggle' href='../community.html'><span>Community</span></a>
   39       
   40 <ul class='expand-content'>    <li><a href='https://dlang.org/blog'>Blog</a></li>
   41     <li><a href='../orgs-using-d.html'>Orgs using D</a></li>
   42     <li><a href='https://twitter.com/search?q=%23dlang'>Twitter</a></li>
   43     <li><a href='../calendar.html'>Calendar</a></li>
   44     <li class="menu-divider"><a href='https://forum.dlang.org'>Forums</a></li>
   45     <li><a href='irc://irc.freenode.net/d'>IRC</a></li>
   46     <li><a href='https://discord.gg/bMZk9Q4'>Community Discord</a></li>
   47     <li><a href='https://wiki.dlang.org'>Wiki</a></li>
   48     <li class="menu-divider"><a href='https://github.com/dlang'>GitHub</a></li>
   49     <li><a href='../bugstats.html'>Issues</a></li>
   50     <li><a href='https://wiki.dlang.org/Get_involved'>Get involved</a></li>
   51     <li class="menu-divider"><a href='../foundation/contributors.html'>Contributors</a></li>
   52     <li><a href='../foundation/index.html'>Foundation</a></li>
   53     <li><a href='..//security.html'>Security Team</a></li>
   54     <li><a href='../foundation/donate.html'>Donate</a></li>
   55     <li><a href='../foundation/sponsors.html'>Sponsors</a></li>
   56  </ul></li>
   57     <li class='expand-container'><a class='expand-toggle' href='../resources.html'><span>Resources</span></a>
   58       
   59 <ul class='expand-content'>    <li><a href='https://tour.dlang.org'>Tour</a></li>
   60     <li><a href='https://wiki.dlang.org/Books'>Books</a></li>
   61     <li><a href='https://wiki.dlang.org/Tutorials'>Tutorials</a></li>
   62     <li class="menu-divider"><a href='https://wiki.dlang.org/Development_tools'>Tools</a></li>
   63     <li><a href='https://wiki.dlang.org/Editors'>Editors</a></li>
   64     <li><a href='https://wiki.dlang.org/IDEs'>IDEs</a></li>
   65     <li><a href='https://run.dlang.io'>run.dlang.io</a></li>
   66     <li><a href='http://rainers.github.io/visuald/visuald/StartPage.html'>Visual D</a></li>
   67     <li class="menu-divider"><a href='../acknowledgements.html'>Acknowledgments</a></li>
   68     <li><a href='../dstyle.html'>D Style</a></li>
   69     <li><a href='../glossary.html'>Glossary</a></li>
   70     <li><a href='../sitemap.html'>Sitemap</a></li>
   71  </ul></li>
   72 </ul></div>
   73     <div class="search-container expand-container">        <a href="../search.html" class="expand-toggle" title="Search"><span>Search</span></a>
   74         
   75     <div id="search-box">        <form method="get" action="https://google.com/search">
   76             <input type="hidden" id="domains" name="domains" value="dlang.org">
   77             <input type="hidden" id="sourceid" name="sourceid" value="google-search">
   78             <span id="search-query"><input id="q" name="q" placeholder="Search"></span><span id="search-dropdown"><span class="helper">                <select id="sitesearch" name="sitesearch" size="1">
   79                     <option value="dlang.org">Entire Site</option>
   80                     <option  value="dlang.org/spec">Language</option>
   81                     <option selected value="dlang.org/phobos">Library</option>
   82                     <option  value="forum.dlang.org">Forums</option>
   83                     
   84                 </select>
   85             </span></span><span id="search-submit"><button type="submit"><i class="fa fa-search"></i><span>go</span></button></span>
   86         </form>
   87     </div>
   88     </div>
   89 </div></div></div>
   90 
   91 <div class="container">    
   92 <div class="subnav-helper"></div> <div class="subnav">    <div class="head">        <h2>Library Reference</h2>
   93         <p><span class="smallprint">version 2.094.2 <span class="separator"><br></span>
   94             </span>
   95         </p>
   96         <p><a href="index.html">overview</a></p>
   97     </div>
   98     <ul>
   99 
  100 <li><a href='object.html'><span><em class="tt">object</em></span></a></li>
  101 
  102 <li class='expand-container modlist-submenu-std'><a class='expand-toggle' href='#'><span><em class="tt">std</em></span></a>
  103 <ul><li>  <a href="std_algorithm.html" title="std.algorithm"><span class="d_inlinecode donthyphenate notranslate">algorithm</span></a><ul><li>    <a href="std_algorithm_comparison.html" title="std.algorithm.comparison"><span class="d_inlinecode donthyphenate notranslate">comparison</span></a></li><li>    <a href="std_algorithm_iteration.html" title="std.algorithm.iteration"><span class="d_inlinecode donthyphenate notranslate">iteration</span></a></li><li>    <a href="std_algorithm_mutation.html" title="std.algorithm.mutation"><span class="d_inlinecode donthyphenate notranslate">mutation</span></a></li><li>    <a href="std_algorithm_searching.html" title="std.algorithm.searching"><span class="d_inlinecode donthyphenate notranslate">searching</span></a></li><li>    <a href="std_algorithm_setops.html" title="std.algorithm.setops"><span class="d_inlinecode donthyphenate notranslate">setops</span></a></li><li>    <a href="std_algorithm_sorting.html" title="std.algorithm.sorting"><span class="d_inlinecode donthyphenate notranslate">sorting</span></a>
  104   </li></ul></li><li>  <a href="std_array.html" title="std.array"><span class="d_inlinecode donthyphenate notranslate">array</span></a></li><li>  <a href="std_ascii.html" title="std.ascii"><span class="d_inlinecode donthyphenate notranslate">ascii</span></a></li><li>  <a href="std_base64.html" title="std.base64"><span class="d_inlinecode donthyphenate notranslate">base64</span></a></li><li>  <a href="std_bigint.html" title="std.bigint"><span class="d_inlinecode donthyphenate notranslate">bigint</span></a></li><li>  <a href="std_bitmanip.html" title="std.bitmanip"><span class="d_inlinecode donthyphenate notranslate">bitmanip</span></a></li><li>  <a href="std_compiler.html" title="std.compiler"><span class="d_inlinecode donthyphenate notranslate">compiler</span></a></li><li>  <a href="std_complex.html" title="std.complex"><span class="d_inlinecode donthyphenate notranslate">complex</span></a></li><li>  <a href="std_concurrency.html" title="std.concurrency"><span class="d_inlinecode donthyphenate notranslate">concurrency</span></a></li><li>  <a href="std_container.html" title="std.container"><span class="d_inlinecode donthyphenate notranslate">container</span></a><ul><li>    <a href="std_container_array.html" title="std.container.array"><span class="d_inlinecode donthyphenate notranslate">array</span></a></li><li>    <a href="std_container_binaryheap.html" title="std.container.binaryheap"><span class="d_inlinecode donthyphenate notranslate">binaryheap</span></a></li><li>    <a href="std_container_dlist.html" title="std.container.dlist"><span class="d_inlinecode donthyphenate notranslate">dlist</span></a></li><li>    <a href="std_container_rbtree.html" title="std.container.rbtree"><span class="d_inlinecode donthyphenate notranslate">rbtree</span></a></li><li>    <a href="std_container_slist.html" title="std.container.slist"><span class="d_inlinecode donthyphenate notranslate">slist</span></a></li><li>    <a href="std_container_util.html" title="std.container.util"><span class="d_inlinecode donthyphenate notranslate">util</span></a>
  105   </li></ul></li><li>  <a href="std_conv.html" title="std.conv"><span class="d_inlinecode donthyphenate notranslate">conv</span></a></li><li>  <a href="std_csv.html" title="std.csv"><span class="d_inlinecode donthyphenate notranslate">csv</span></a></li><li>  <a href="std_datetime.html" title="std.datetime"><span class="d_inlinecode donthyphenate notranslate">datetime</span></a><ul><li>    <a href="std_datetime_date.html" title="std.datetime.date"><span class="d_inlinecode donthyphenate notranslate">date</span></a></li><li>    <a href="std_datetime_interval.html" title="std.datetime.interval"><span class="d_inlinecode donthyphenate notranslate">interval</span></a></li><li>    <a href="std_datetime_stopwatch.html" title="std.datetime.stopwatch"><span class="d_inlinecode donthyphenate notranslate">stopwatch</span></a></li><li>    <a href="std_datetime_systime.html" title="std.datetime.systime"><span class="d_inlinecode donthyphenate notranslate">systime</span></a></li><li>    <a href="std_datetime_timezone.html" title="std.datetime.timezone"><span class="d_inlinecode donthyphenate notranslate">timezone</span></a>
  106   </li></ul></li><li>  <a href="std_demangle.html" title="std.demangle"><span class="d_inlinecode donthyphenate notranslate">demangle</span></a></li><li>  <a href="std_digest.html" title="std.digest"><span class="d_inlinecode donthyphenate notranslate">digest</span></a><ul><li>    <a href="std_digest_crc.html" title="std.digest.crc"><span class="d_inlinecode donthyphenate notranslate">crc</span></a></li><li>    <a href="std_digest_hmac.html" title="std.digest.hmac"><span class="d_inlinecode donthyphenate notranslate">hmac</span></a></li><li>    <a href="std_digest_md.html" title="std.digest.md"><span class="d_inlinecode donthyphenate notranslate">md</span></a></li><li>    <a href="std_digest_murmurhash.html" title="std.digest.murmurhash"><span class="d_inlinecode donthyphenate notranslate">murmurhash</span></a></li><li>    <a href="std_digest_ripemd.html" title="std.digest.ripemd"><span class="d_inlinecode donthyphenate notranslate">ripemd</span></a></li><li>    <a href="std_digest_sha.html" title="std.digest.sha"><span class="d_inlinecode donthyphenate notranslate">sha</span></a>
  107   </li></ul></li><li>  <a href="std_encoding.html" title="std.encoding"><span class="d_inlinecode donthyphenate notranslate">encoding</span></a></li><li>  <a href="std_exception.html" title="std.exception"><span class="d_inlinecode donthyphenate notranslate">exception</span></a></li><li>  <h7><span class="d_inlinecode donthyphenate notranslate">experimental</span></h7><ul><li>    <a href="std_experimental_allocator.html" title="std.experimental.allocator"><span class="d_inlinecode donthyphenate notranslate">allocator</span></a><ul><li>      <a href="std_experimental_allocator_building_blocks.html" title="std.experimental.allocator.building_blocks"><span class="d_inlinecode donthyphenate notranslate">building_blocks</span></a><ul><li>        <a href="std_experimental_allocator_building_blocks_affix_allocator.html" title="std.experimental.allocator.building_blocks.affix_allocator"><span class="d_inlinecode donthyphenate notranslate">affix_allocator</span></a></li><li>        <a href="std_experimental_allocator_building_blocks_aligned_block_list.html" title="std.experimental.allocator.building_blocks.aligned_block_list"><span class="d_inlinecode donthyphenate notranslate">aligned_block_list</span></a></li><li>        <a href="std_experimental_allocator_building_blocks_allocator_list.html" title="std.experimental.allocator.building_blocks.allocator_list"><span class="d_inlinecode donthyphenate notranslate">allocator_list</span></a></li><li>        <a href="std_experimental_allocator_building_blocks_ascending_page_allocator.html" title="std.experimental.allocator.building_blocks.ascending_page_allocator"><span class="d_inlinecode donthyphenate notranslate">ascending_page_allocator</span></a></li><li>        <a href="std_experimental_allocator_building_blocks_bitmapped_block.html" title="std.experimental.allocator.building_blocks.bitmapped_block"><span class="d_inlinecode donthyphenate notranslate">bitmapped_block</span></a></li><li>        <a href="std_experimental_allocator_building_blocks_bucketizer.html" title="std.experimental.allocator.building_blocks.bucketizer"><span class="d_inlinecode donthyphenate notranslate">bucketizer</span></a></li><li>        <a href="std_experimental_allocator_building_blocks_fallback_allocator.html" title="std.experimental.allocator.building_blocks.fallback_allocator"><span class="d_inlinecode donthyphenate notranslate">fallback_allocator</span></a></li><li>        <a href="std_experimental_allocator_building_blocks_free_list.html" title="std.experimental.allocator.building_blocks.free_list"><span class="d_inlinecode donthyphenate notranslate">free_list</span></a></li><li>        <a href="std_experimental_allocator_building_blocks_free_tree.html" title="std.experimental.allocator.building_blocks.free_tree"><span class="d_inlinecode donthyphenate notranslate">free_tree</span></a></li><li>        <a href="std_experimental_allocator_building_blocks_kernighan_ritchie.html" title="std.experimental.allocator.building_blocks.kernighan_ritchie"><span class="d_inlinecode donthyphenate notranslate">kernighan_ritchie</span></a></li><li>        <a href="std_experimental_allocator_building_blocks_null_allocator.html" title="std.experimental.allocator.building_blocks.null_allocator"><span class="d_inlinecode donthyphenate notranslate">null_allocator</span></a></li><li>        <a href="std_experimental_allocator_building_blocks_quantizer.html" title="std.experimental.allocator.building_blocks.quantizer"><span class="d_inlinecode donthyphenate notranslate">quantizer</span></a></li><li>        <a href="std_experimental_allocator_building_blocks_region.html" title="std.experimental.allocator.building_blocks.region"><span class="d_inlinecode donthyphenate notranslate">region</span></a></li><li>        <a href="std_experimental_allocator_building_blocks_scoped_allocator.html" title="std.experimental.allocator.building_blocks.scoped_allocator"><span class="d_inlinecode donthyphenate notranslate">scoped_allocator</span></a></li><li>        <a href="std_experimental_allocator_building_blocks_segregator.html" title="std.experimental.allocator.building_blocks.segregator"><span class="d_inlinecode donthyphenate notranslate">segregator</span></a></li><li>        <a href="std_experimental_allocator_building_blocks_stats_collector.html" title="std.experimental.allocator.building_blocks.stats_collector"><span class="d_inlinecode donthyphenate notranslate">stats_collector</span></a>
  108       </li></ul></li><li>      <a href="std_experimental_allocator_common.html" title="std.experimental.allocator.common"><span class="d_inlinecode donthyphenate notranslate">common</span></a></li><li>      <a href="std_experimental_allocator_gc_allocator.html" title="std.experimental.allocator.gc_allocator"><span class="d_inlinecode donthyphenate notranslate">gc_allocator</span></a></li><li>      <a href="std_experimental_allocator_mallocator.html" title="std.experimental.allocator.mallocator"><span class="d_inlinecode donthyphenate notranslate">mallocator</span></a></li><li>      <a href="std_experimental_allocator_mmap_allocator.html" title="std.experimental.allocator.mmap_allocator"><span class="d_inlinecode donthyphenate notranslate">mmap_allocator</span></a></li><li>      <a href="std_experimental_allocator_showcase.html" title="std.experimental.allocator.showcase"><span class="d_inlinecode donthyphenate notranslate">showcase</span></a></li><li>      <a href="std_experimental_allocator_typed.html" title="std.experimental.allocator.typed"><span class="d_inlinecode donthyphenate notranslate">typed</span></a>
  109     </li></ul></li><li>    <a href="std_experimental_checkedint.html" title="std.experimental.checkedint"><span class="d_inlinecode donthyphenate notranslate">checkedint</span></a></li><li>    <a href="std_experimental_logger.html" title="std.experimental.logger"><span class="d_inlinecode donthyphenate notranslate">logger</span></a><ul><li>      <a href="std_experimental_logger_core.html" title="std.experimental.logger.core"><span class="d_inlinecode donthyphenate notranslate">core</span></a></li><li>      <a href="std_experimental_logger_filelogger.html" title="std.experimental.logger.filelogger"><span class="d_inlinecode donthyphenate notranslate">filelogger</span></a></li><li>      <a href="std_experimental_logger_multilogger.html" title="std.experimental.logger.multilogger"><span class="d_inlinecode donthyphenate notranslate">multilogger</span></a></li><li>      <a href="std_experimental_logger_nulllogger.html" title="std.experimental.logger.nulllogger"><span class="d_inlinecode donthyphenate notranslate">nulllogger</span></a>
  110     </li></ul></li><li>    <a href="std_experimental_typecons.html" title="std.experimental.typecons"><span class="d_inlinecode donthyphenate notranslate">typecons</span></a>
  111   </li></ul></li><li>  <a href="std_file.html" title="std.file"><span class="d_inlinecode donthyphenate notranslate">file</span></a></li><li>  <a href="std_format.html" title="std.format"><span class="d_inlinecode donthyphenate notranslate">format</span></a></li><li>  <a href="std_functional.html" title="std.functional"><span class="d_inlinecode donthyphenate notranslate">functional</span></a></li><li>  <a href="std_getopt.html" title="std.getopt"><span class="d_inlinecode donthyphenate notranslate">getopt</span></a></li><li>  <a href="std_json.html" title="std.json"><span class="d_inlinecode donthyphenate notranslate">json</span></a></li><li>  <a href="std_math.html" title="std.math"><span class="d_inlinecode donthyphenate notranslate">math</span></a></li><li>  <a href="std_mathspecial.html" title="std.mathspecial"><span class="d_inlinecode donthyphenate notranslate">mathspecial</span></a></li><li>  <a href="std_meta.html" title="std.meta"><span class="d_inlinecode donthyphenate notranslate">meta</span></a></li><li>  <a href="std_mmfile.html" title="std.mmfile"><span class="d_inlinecode donthyphenate notranslate">mmfile</span></a></li><li>  <h7><span class="d_inlinecode donthyphenate notranslate">net</span></h7><ul><li>    <a href="std_net_curl.html" title="std.net.curl"><span class="d_inlinecode donthyphenate notranslate">curl</span></a></li><li>    <a href="std_net_isemail.html" title="std.net.isemail"><span class="d_inlinecode donthyphenate notranslate">isemail</span></a>
  112   </li></ul></li><li>  <a href="std_numeric.html" title="std.numeric"><span class="d_inlinecode donthyphenate notranslate">numeric</span></a></li><li>  <a href="std_outbuffer.html" title="std.outbuffer"><span class="d_inlinecode donthyphenate notranslate">outbuffer</span></a></li><li>  <a href="std_parallelism.html" title="std.parallelism"><span class="d_inlinecode donthyphenate notranslate">parallelism</span></a></li><li>  <a href="std_path.html" title="std.path"><span class="d_inlinecode donthyphenate notranslate">path</span></a></li><li>  <a href="std_process.html" title="std.process"><span class="d_inlinecode donthyphenate notranslate">process</span></a></li><li>  <a href="std_random.html" title="std.random"><span class="d_inlinecode donthyphenate notranslate">random</span></a></li><li>  <a href="std_range.html" title="std.range"><span class="d_inlinecode donthyphenate notranslate">range</span></a><ul><li>    <a href="std_range_interfaces.html" title="std.range.interfaces"><span class="d_inlinecode donthyphenate notranslate">interfaces</span></a></li><li>    <a href="std_range_primitives.html" title="std.range.primitives"><span class="d_inlinecode donthyphenate notranslate">primitives</span></a>
  113   </li></ul></li><li>  <a href="std_regex.html" title="std.regex"><span class="d_inlinecode donthyphenate notranslate">regex</span></a></li><li>  <a href="std_signals.html" title="std.signals"><span class="d_inlinecode donthyphenate notranslate">signals</span></a></li><li>  <a href="std_socket.html" title="std.socket"><span class="d_inlinecode donthyphenate notranslate">socket</span></a></li><li>  <a href="std_stdint.html" title="std.stdint"><span class="d_inlinecode donthyphenate notranslate">stdint</span></a></li><li>  <a href="std_stdio.html" title="std.stdio"><span class="d_inlinecode donthyphenate notranslate">stdio</span></a></li><li>  <a href="std_string.html" title="std.string"><span class="d_inlinecode donthyphenate notranslate">string</span></a></li><li>  <a href="std_system.html" title="std.system"><span class="d_inlinecode donthyphenate notranslate">system</span></a></li><li>  <a href="std_traits.html" title="std.traits"><span class="d_inlinecode donthyphenate notranslate">traits</span></a></li><li>  <a href="std_typecons.html" title="std.typecons"><span class="d_inlinecode donthyphenate notranslate">typecons</span></a></li><li>  <a href="std_uni.html" title="std.uni"><span class="d_inlinecode donthyphenate notranslate">uni</span></a></li><li>  <a href="std_uri.html" title="std.uri"><span class="d_inlinecode donthyphenate notranslate">uri</span></a></li><li>  <a href="std_utf.html" title="std.utf"><span class="d_inlinecode donthyphenate notranslate">utf</span></a></li><li>  <a href="std_uuid.html" title="std.uuid"><span class="d_inlinecode donthyphenate notranslate">uuid</span></a></li><li>  <a href="std_variant.html" title="std.variant"><span class="d_inlinecode donthyphenate notranslate">variant</span></a></li><li>  <h7><span class="d_inlinecode donthyphenate notranslate">windows</span></h7><ul><li>    <a href="std_windows_charset.html" title="std.windows.charset"><span class="d_inlinecode donthyphenate notranslate">charset</span></a></li><li>    <a href="std_windows_syserror.html" title="std.windows.syserror"><span class="d_inlinecode donthyphenate notranslate">syserror</span></a>
  114   </li></ul></li><li>  <a href="std_xml.html" title="std.xml"><span class="d_inlinecode donthyphenate notranslate">xml</span></a></li><li>  <a href="std_zip.html" title="std.zip"><span class="d_inlinecode donthyphenate notranslate">zip</span></a></li><li>  <a href="std_zlib.html" title="std.zlib"><span class="d_inlinecode donthyphenate notranslate">zlib</span></a>
  115 </li></ul>
  116 </li>
  117 
  118 <li class='expand-container modlist-submenu-etc'><a class='expand-toggle' href='#'><span><em class="tt">etc</em></span></a>
  119 <ul><li>  <h7><span class="d_inlinecode donthyphenate notranslate">c</span></h7><ul><li>    <a href="etc_c_curl.html" title="etc.c.curl"><span class="d_inlinecode donthyphenate notranslate">curl</span></a></li><li>    <h7><span class="d_inlinecode donthyphenate notranslate">odbc</span></h7><ul><li>      <a href="etc_c_odbc_sql.html" title="etc.c.odbc.sql"><span class="d_inlinecode donthyphenate notranslate">sql</span></a></li><li>      <a href="etc_c_odbc_sqlext.html" title="etc.c.odbc.sqlext"><span class="d_inlinecode donthyphenate notranslate">sqlext</span></a></li><li>      <a href="etc_c_odbc_sqltypes.html" title="etc.c.odbc.sqltypes"><span class="d_inlinecode donthyphenate notranslate">sqltypes</span></a></li><li>      <a href="etc_c_odbc_sqlucode.html" title="etc.c.odbc.sqlucode"><span class="d_inlinecode donthyphenate notranslate">sqlucode</span></a>
  120     </li></ul></li><li>    <a href="etc_c_sqlite3.html" title="etc.c.sqlite3"><span class="d_inlinecode donthyphenate notranslate">sqlite3</span></a></li><li>    <a href="etc_c_zlib.html" title="etc.c.zlib"><span class="d_inlinecode donthyphenate notranslate">zlib</span></a>
  121   </li></ul>
  122 </li></ul>
  123 </li>
  124 
  125 <li class='expand-container modlist-submenu-core'><a class='expand-toggle' href='#'><span><em class="tt">core</em></span></a>
  126 <ul><li>  <a href="core_atomic.html" title="core.atomic"><span class="d_inlinecode donthyphenate notranslate">atomic</span></a></li><li>  <a href="core_attribute.html" title="core.attribute"><span class="d_inlinecode donthyphenate notranslate">attribute</span></a></li><li>  <a href="core_bitop.html" title="core.bitop"><span class="d_inlinecode donthyphenate notranslate">bitop</span></a></li><li>  <a href="core_checkedint.html" title="core.checkedint"><span class="d_inlinecode donthyphenate notranslate">checkedint</span></a></li><li>  <a href="core_cpuid.html" title="core.cpuid"><span class="d_inlinecode donthyphenate notranslate">cpuid</span></a></li><li>  <a href="core_demangle.html" title="core.demangle"><span class="d_inlinecode donthyphenate notranslate">demangle</span></a></li><li>  <a href="core_exception.html" title="core.exception"><span class="d_inlinecode donthyphenate notranslate">exception</span></a></li><li>  <h7><span class="d_inlinecode donthyphenate notranslate">gc</span></h7><ul><li>    <a href="core_gc_config.html" title="core.gc.config"><span class="d_inlinecode donthyphenate notranslate">config</span></a></li><li>    <a href="core_gc_gcinterface.html" title="core.gc.gcinterface"><span class="d_inlinecode donthyphenate notranslate">gcinterface</span></a></li><li>    <a href="core_gc_registry.html" title="core.gc.registry"><span class="d_inlinecode donthyphenate notranslate">registry</span></a>
  127   </li></ul></li><li>  <a href="core_lifetime.html" title="core.lifetime"><span class="d_inlinecode donthyphenate notranslate">lifetime</span></a></li><li>  <a href="core_math.html" title="core.math"><span class="d_inlinecode donthyphenate notranslate">math</span></a></li><li>  <a href="core_memory.html" title="core.memory"><span class="d_inlinecode donthyphenate notranslate">memory</span></a></li><li>  <a href="core_runtime.html" title="core.runtime"><span class="d_inlinecode donthyphenate notranslate">runtime</span></a></li><li>  <a href="core_simd.html" title="core.simd"><span class="d_inlinecode donthyphenate notranslate">simd</span></a></li><li>  <h7><span class="d_inlinecode donthyphenate notranslate">stdc</span></h7><ul><li>    <a href="core_stdc_assert_.html" title="core.stdc.assert_"><span class="d_inlinecode donthyphenate notranslate">assert_</span></a></li><li>    <a href="core_stdc_complex.html" title="core.stdc.complex"><span class="d_inlinecode donthyphenate notranslate">complex</span></a></li><li>    <a href="core_stdc_ctype.html" title="core.stdc.ctype"><span class="d_inlinecode donthyphenate notranslate">ctype</span></a></li><li>    <a href="core_stdc_errno.html" title="core.stdc.errno"><span class="d_inlinecode donthyphenate notranslate">errno</span></a></li><li>    <a href="core_stdc_fenv.html" title="core.stdc.fenv"><span class="d_inlinecode donthyphenate notranslate">fenv</span></a></li><li>    <a href="core_stdc_float_.html" title="core.stdc.float_"><span class="d_inlinecode donthyphenate notranslate">float_</span></a></li><li>    <a href="core_stdc_inttypes.html" title="core.stdc.inttypes"><span class="d_inlinecode donthyphenate notranslate">inttypes</span></a></li><li>    <a href="core_stdc_limits.html" title="core.stdc.limits"><span class="d_inlinecode donthyphenate notranslate">limits</span></a></li><li>    <a href="core_stdc_locale.html" title="core.stdc.locale"><span class="d_inlinecode donthyphenate notranslate">locale</span></a></li><li>    <a href="core_stdc_math.html" title="core.stdc.math"><span class="d_inlinecode donthyphenate notranslate">math</span></a></li><li>    <a href="core_stdc_signal.html" title="core.stdc.signal"><span class="d_inlinecode donthyphenate notranslate">signal</span></a></li><li>    <a href="core_stdc_stdarg.html" title="core.stdc.stdarg"><span class="d_inlinecode donthyphenate notranslate">stdarg</span></a></li><li>    <a href="core_stdc_stddef.html" title="core.stdc.stddef"><span class="d_inlinecode donthyphenate notranslate">stddef</span></a></li><li>    <a href="core_stdc_stdint.html" title="core.stdc.stdint"><span class="d_inlinecode donthyphenate notranslate">stdint</span></a></li><li>    <a href="core_stdc_stdio.html" title="core.stdc.stdio"><span class="d_inlinecode donthyphenate notranslate">stdio</span></a></li><li>    <a href="core_stdc_stdlib.html" title="core.stdc.stdlib"><span class="d_inlinecode donthyphenate notranslate">stdlib</span></a></li><li>    <a href="core_stdc_string.html" title="core.stdc.string"><span class="d_inlinecode donthyphenate notranslate">string</span></a></li><li>    <a href="core_stdc_tgmath.html" title="core.stdc.tgmath"><span class="d_inlinecode donthyphenate notranslate">tgmath</span></a></li><li>    <a href="core_stdc_time.html" title="core.stdc.time"><span class="d_inlinecode donthyphenate notranslate">time</span></a></li><li>    <a href="core_stdc_wchar_.html" title="core.stdc.wchar_"><span class="d_inlinecode donthyphenate notranslate">wchar_</span></a></li><li>    <a href="core_stdc_wctype.html" title="core.stdc.wctype"><span class="d_inlinecode donthyphenate notranslate">wctype</span></a>
  128   </li></ul></li><li>  <h7><span class="d_inlinecode donthyphenate notranslate">stdcpp</span></h7><ul><li>    <a href="core_stdcpp_allocator.html" title="core.stdcpp.allocator"><span class="d_inlinecode donthyphenate notranslate">allocator</span></a></li><li>    <a href="core_stdcpp_array.html" title="core.stdcpp.array"><span class="d_inlinecode donthyphenate notranslate">array</span></a></li><li>    <a href="core_stdcpp_exception.html" title="core.stdcpp.exception"><span class="d_inlinecode donthyphenate notranslate">exception</span></a></li><li>    <a href="core_stdcpp_memory.html" title="core.stdcpp.memory"><span class="d_inlinecode donthyphenate notranslate">memory</span></a></li><li>    <a href="core_stdcpp_new_.html" title="core.stdcpp.new_"><span class="d_inlinecode donthyphenate notranslate">new_</span></a></li><li>    <a href="core_stdcpp_string.html" title="core.stdcpp.string"><span class="d_inlinecode donthyphenate notranslate">string</span></a></li><li>    <a href="core_stdcpp_string_view.html" title="core.stdcpp.string_view"><span class="d_inlinecode donthyphenate notranslate">string_view</span></a></li><li>    <a href="core_stdcpp_type_traits.html" title="core.stdcpp.type_traits"><span class="d_inlinecode donthyphenate notranslate">type_traits</span></a></li><li>    <a href="core_stdcpp_typeinfo.html" title="core.stdcpp.typeinfo"><span class="d_inlinecode donthyphenate notranslate">typeinfo</span></a></li><li>    <a href="core_stdcpp_utility.html" title="core.stdcpp.utility"><span class="d_inlinecode donthyphenate notranslate">utility</span></a></li><li>    <a href="core_stdcpp_vector.html" title="core.stdcpp.vector"><span class="d_inlinecode donthyphenate notranslate">vector</span></a></li><li>    <a href="core_stdcpp_xutility.html" title="core.stdcpp.xutility"><span class="d_inlinecode donthyphenate notranslate">xutility</span></a>
  129   </li></ul></li><li>  <h7><span class="d_inlinecode donthyphenate notranslate">sync</span></h7><ul><li>    <a href="core_sync_barrier.html" title="core.sync.barrier"><span class="d_inlinecode donthyphenate notranslate">barrier</span></a></li><li>    <a href="core_sync_condition.html" title="core.sync.condition"><span class="d_inlinecode donthyphenate notranslate">condition</span></a></li><li>    <a href="core_sync_config.html" title="core.sync.config"><span class="d_inlinecode donthyphenate notranslate">config</span></a></li><li>    <a href="core_sync_event.html" title="core.sync.event"><span class="d_inlinecode donthyphenate notranslate">event</span></a></li><li>    <a href="core_sync_exception.html" title="core.sync.exception"><span class="d_inlinecode donthyphenate notranslate">exception</span></a></li><li>    <a href="core_sync_mutex.html" title="core.sync.mutex"><span class="d_inlinecode donthyphenate notranslate">mutex</span></a></li><li>    <a href="core_sync_rwmutex.html" title="core.sync.rwmutex"><span class="d_inlinecode donthyphenate notranslate">rwmutex</span></a></li><li>    <a href="core_sync_semaphore.html" title="core.sync.semaphore"><span class="d_inlinecode donthyphenate notranslate">semaphore</span></a>
  130   </li></ul></li><li>  <a href="core_thread.html" title="core.thread"><span class="d_inlinecode donthyphenate notranslate">thread</span></a><ul><li>    <a href="core_thread_context.html" title="core.thread.context"><span class="d_inlinecode donthyphenate notranslate">context</span></a></li><li>    <a href="core_thread_fiber.html" title="core.thread.fiber"><span class="d_inlinecode donthyphenate notranslate">fiber</span></a></li><li>    <a href="core_thread_osthread.html" title="core.thread.osthread"><span class="d_inlinecode donthyphenate notranslate">osthread</span></a></li><li>    <a href="core_thread_threadbase.html" title="core.thread.threadbase"><span class="d_inlinecode donthyphenate notranslate">threadbase</span></a></li><li>    <a href="core_thread_threadgroup.html" title="core.thread.threadgroup"><span class="d_inlinecode donthyphenate notranslate">threadgroup</span></a></li><li>    <a href="core_thread_types.html" title="core.thread.types"><span class="d_inlinecode donthyphenate notranslate">types</span></a>
  131   </li></ul></li><li>  <a href="core_time.html" title="core.time"><span class="d_inlinecode donthyphenate notranslate">time</span></a></li><li>  <a href="core_vararg.html" title="core.vararg"><span class="d_inlinecode donthyphenate notranslate">vararg</span></a></li><li>  <a href="core_volatile.html" title="core.volatile"><span class="d_inlinecode donthyphenate notranslate">volatile</span></a>
  132 </li></ul>
  133 </li>
  134 <div class="modlist-internal-separator">Internal API</div>
  135 
  136 <li class='expand-container modlist-submenu-core'><a class='expand-toggle' href='#'><span><em class="tt">core</em></span></a>
  137 <ul><li>  <h7><span class="d_inlinecode donthyphenate notranslate">internal</span></h7><ul><li>    <h7><span class="d_inlinecode donthyphenate notranslate">array</span></h7><ul><li>      <a href="core_internal_array_appending.html" title="core.internal.array.appending"><span class="d_inlinecode donthyphenate notranslate">appending</span></a></li><li>      <a href="core_internal_array_capacity.html" title="core.internal.array.capacity"><span class="d_inlinecode donthyphenate notranslate">capacity</span></a></li><li>      <a href="core_internal_array_casting.html" title="core.internal.array.casting"><span class="d_inlinecode donthyphenate notranslate">casting</span></a></li><li>      <a href="core_internal_array_comparison.html" title="core.internal.array.comparison"><span class="d_inlinecode donthyphenate notranslate">comparison</span></a></li><li>      <a href="core_internal_array_concatenation.html" title="core.internal.array.concatenation"><span class="d_inlinecode donthyphenate notranslate">concatenation</span></a></li><li>      <a href="core_internal_array_construction.html" title="core.internal.array.construction"><span class="d_inlinecode donthyphenate notranslate">construction</span></a></li><li>      <a href="core_internal_array_equality.html" title="core.internal.array.equality"><span class="d_inlinecode donthyphenate notranslate">equality</span></a></li><li>      <a href="core_internal_array_operations.html" title="core.internal.array.operations"><span class="d_inlinecode donthyphenate notranslate">operations</span></a></li><li>      <a href="core_internal_array_utils.html" title="core.internal.array.utils"><span class="d_inlinecode donthyphenate notranslate">utils</span></a>
  138     </li></ul></li><li>    <h7><span class="d_inlinecode donthyphenate notranslate">util</span></h7><ul><li>      <a href="core_internal_util_array.html" title="core.internal.util.array"><span class="d_inlinecode donthyphenate notranslate">array</span></a>
  139     </li></ul>
  140   </li></ul>
  141 </li></ul>
  142 </li>
  143 
  144 <li class='expand-container modlist-submenu-dmd'><a class='expand-toggle' href='#'><span><em class="tt">dmd</em></span></a>
  145 <ul><li>  <a href="dmd_access.html" title="dmd.access"><span class="d_inlinecode donthyphenate notranslate">access</span></a></li><li>  <a href="dmd_aggregate.html" title="dmd.aggregate"><span class="d_inlinecode donthyphenate notranslate">aggregate</span></a></li><li>  <a href="dmd_aliasthis.html" title="dmd.aliasthis"><span class="d_inlinecode donthyphenate notranslate">aliasthis</span></a></li><li>  <a href="dmd_apply.html" title="dmd.apply"><span class="d_inlinecode donthyphenate notranslate">apply</span></a></li><li>  <a href="dmd_argtypes_aarch64.html" title="dmd.argtypes_aarch64"><span class="d_inlinecode donthyphenate notranslate">argtypes_aarch64</span></a></li><li>  <a href="dmd_argtypes_sysv_x64.html" title="dmd.argtypes_sysv_x64"><span class="d_inlinecode donthyphenate notranslate">argtypes_sysv_x64</span></a></li><li>  <a href="dmd_argtypes_x86.html" title="dmd.argtypes_x86"><span class="d_inlinecode donthyphenate notranslate">argtypes_x86</span></a></li><li>  <a href="dmd_arrayop.html" title="dmd.arrayop"><span class="d_inlinecode donthyphenate notranslate">arrayop</span></a></li><li>  <a href="dmd_arraytypes.html" title="dmd.arraytypes"><span class="d_inlinecode donthyphenate notranslate">arraytypes</span></a></li><li>  <a href="dmd_ast_node.html" title="dmd.ast_node"><span class="d_inlinecode donthyphenate notranslate">ast_node</span></a></li><li>  <a href="dmd_astbase.html" title="dmd.astbase"><span class="d_inlinecode donthyphenate notranslate">astbase</span></a></li><li>  <a href="dmd_astcodegen.html" title="dmd.astcodegen"><span class="d_inlinecode donthyphenate notranslate">astcodegen</span></a></li><li>  <a href="dmd_asttypename.html" title="dmd.asttypename"><span class="d_inlinecode donthyphenate notranslate">asttypename</span></a></li><li>  <a href="dmd_attrib.html" title="dmd.attrib"><span class="d_inlinecode donthyphenate notranslate">attrib</span></a></li><li>  <h7><span class="d_inlinecode donthyphenate notranslate">backend</span></h7><ul><li>    <a href="dmd_backend_aarray.html" title="dmd.backend.aarray"><span class="d_inlinecode donthyphenate notranslate">aarray</span></a></li><li>    <a href="dmd_backend_backconfig.html" title="dmd.backend.backconfig"><span class="d_inlinecode donthyphenate notranslate">backconfig</span></a></li><li>    <a href="dmd_backend_backend.html" title="dmd.backend.backend"><span class="d_inlinecode donthyphenate notranslate">backend</span></a></li><li>    <a href="dmd_backend_barray.html" title="dmd.backend.barray"><span class="d_inlinecode donthyphenate notranslate">barray</span></a></li><li>    <a href="dmd_backend_bcomplex.html" title="dmd.backend.bcomplex"><span class="d_inlinecode donthyphenate notranslate">bcomplex</span></a></li><li>    <a href="dmd_backend_blockopt.html" title="dmd.backend.blockopt"><span class="d_inlinecode donthyphenate notranslate">blockopt</span></a></li><li>    <a href="dmd_backend_cc.html" title="dmd.backend.cc"><span class="d_inlinecode donthyphenate notranslate">cc</span></a></li><li>    <a href="dmd_backend_cdef.html" title="dmd.backend.cdef"><span class="d_inlinecode donthyphenate notranslate">cdef</span></a></li><li>    <a href="dmd_backend_cg.html" title="dmd.backend.cg"><span class="d_inlinecode donthyphenate notranslate">cg</span></a></li><li>    <a href="dmd_backend_cg87.html" title="dmd.backend.cg87"><span class="d_inlinecode donthyphenate notranslate">cg87</span></a></li><li>    <a href="dmd_backend_cgcod.html" title="dmd.backend.cgcod"><span class="d_inlinecode donthyphenate notranslate">cgcod</span></a></li><li>    <a href="dmd_backend_cgcs.html" title="dmd.backend.cgcs"><span class="d_inlinecode donthyphenate notranslate">cgcs</span></a></li><li>    <a href="dmd_backend_cgcse.html" title="dmd.backend.cgcse"><span class="d_inlinecode donthyphenate notranslate">cgcse</span></a></li><li>    <a href="dmd_backend_cgcv.html" title="dmd.backend.cgcv"><span class="d_inlinecode donthyphenate notranslate">cgcv</span></a></li><li>    <a href="dmd_backend_cgelem.html" title="dmd.backend.cgelem"><span class="d_inlinecode donthyphenate notranslate">cgelem</span></a></li><li>    <a href="dmd_backend_cgen.html" title="dmd.backend.cgen"><span class="d_inlinecode donthyphenate notranslate">cgen</span></a></li><li>    <a href="dmd_backend_cgobj.html" title="dmd.backend.cgobj"><span class="d_inlinecode donthyphenate notranslate">cgobj</span></a></li><li>    <a href="dmd_backend_cgreg.html" title="dmd.backend.cgreg"><span class="d_inlinecode donthyphenate notranslate">cgreg</span></a></li><li>    <a href="dmd_backend_cgsched.html" title="dmd.backend.cgsched"><span class="d_inlinecode donthyphenate notranslate">cgsched</span></a></li><li>    <a href="dmd_backend_cgxmm.html" title="dmd.backend.cgxmm"><span class="d_inlinecode donthyphenate notranslate">cgxmm</span></a></li><li>    <a href="dmd_backend_cod1.html" title="dmd.backend.cod1"><span class="d_inlinecode donthyphenate notranslate">cod1</span></a></li><li>    <a href="dmd_backend_cod2.html" title="dmd.backend.cod2"><span class="d_inlinecode donthyphenate notranslate">cod2</span></a></li><li>    <a href="dmd_backend_cod3.html" title="dmd.backend.cod3"><span class="d_inlinecode donthyphenate notranslate">cod3</span></a></li><li>    <a href="dmd_backend_cod4.html" title="dmd.backend.cod4"><span class="d_inlinecode donthyphenate notranslate">cod4</span></a></li><li>    <a href="dmd_backend_cod5.html" title="dmd.backend.cod5"><span class="d_inlinecode donthyphenate notranslate">cod5</span></a></li><li>    <a href="dmd_backend_code.html" title="dmd.backend.code"><span class="d_inlinecode donthyphenate notranslate">code</span></a></li><li>    <a href="dmd_backend_code_x86.html" title="dmd.backend.code_x86"><span class="d_inlinecode donthyphenate notranslate">code_x86</span></a></li><li>    <a href="dmd_backend_codebuilder.html" title="dmd.backend.codebuilder"><span class="d_inlinecode donthyphenate notranslate">codebuilder</span></a></li><li>    <a href="dmd_backend_compress.html" title="dmd.backend.compress"><span class="d_inlinecode donthyphenate notranslate">compress</span></a></li><li>    <a href="dmd_backend_cv4.html" title="dmd.backend.cv4"><span class="d_inlinecode donthyphenate notranslate">cv4</span></a></li><li>    <a href="dmd_backend_cv8.html" title="dmd.backend.cv8"><span class="d_inlinecode donthyphenate notranslate">cv8</span></a></li><li>    <a href="dmd_backend_dcgcv.html" title="dmd.backend.dcgcv"><span class="d_inlinecode donthyphenate notranslate">dcgcv</span></a></li><li>    <a href="dmd_backend_dcode.html" title="dmd.backend.dcode"><span class="d_inlinecode donthyphenate notranslate">dcode</span></a></li><li>    <a href="dmd_backend_debugprint.html" title="dmd.backend.debugprint"><span class="d_inlinecode donthyphenate notranslate">debugprint</span></a></li><li>    <a href="dmd_backend_divcoeff.html" title="dmd.backend.divcoeff"><span class="d_inlinecode donthyphenate notranslate">divcoeff</span></a></li><li>    <a href="dmd_backend_dlist.html" title="dmd.backend.dlist"><span class="d_inlinecode donthyphenate notranslate">dlist</span></a></li><li>    <a href="dmd_backend_drtlsym.html" title="dmd.backend.drtlsym"><span class="d_inlinecode donthyphenate notranslate">drtlsym</span></a></li><li>    <a href="dmd_backend_dt.html" title="dmd.backend.dt"><span class="d_inlinecode donthyphenate notranslate">dt</span></a></li><li>    <a href="dmd_backend_dtype.html" title="dmd.backend.dtype"><span class="d_inlinecode donthyphenate notranslate">dtype</span></a></li><li>    <a href="dmd_backend_dvarstats.html" title="dmd.backend.dvarstats"><span class="d_inlinecode donthyphenate notranslate">dvarstats</span></a></li><li>    <a href="dmd_backend_dvec.html" title="dmd.backend.dvec"><span class="d_inlinecode donthyphenate notranslate">dvec</span></a></li><li>    <a href="dmd_backend_dwarf.html" title="dmd.backend.dwarf"><span class="d_inlinecode donthyphenate notranslate">dwarf</span></a></li><li>    <a href="dmd_backend_dwarf2.html" title="dmd.backend.dwarf2"><span class="d_inlinecode donthyphenate notranslate">dwarf2</span></a></li><li>    <a href="dmd_backend_dwarfdbginf.html" title="dmd.backend.dwarfdbginf"><span class="d_inlinecode donthyphenate notranslate">dwarfdbginf</span></a></li><li>    <a href="dmd_backend_dwarfeh.html" title="dmd.backend.dwarfeh"><span class="d_inlinecode donthyphenate notranslate">dwarfeh</span></a></li><li>    <a href="dmd_backend_ee.html" title="dmd.backend.ee"><span class="d_inlinecode donthyphenate notranslate">ee</span></a></li><li>    <a href="dmd_backend_el.html" title="dmd.backend.el"><span class="d_inlinecode donthyphenate notranslate">el</span></a></li><li>    <a href="dmd_backend_elem.html" title="dmd.backend.elem"><span class="d_inlinecode donthyphenate notranslate">elem</span></a></li><li>    <a href="dmd_backend_elfobj.html" title="dmd.backend.elfobj"><span class="d_inlinecode donthyphenate notranslate">elfobj</span></a></li><li>    <a href="dmd_backend_elpicpie.html" title="dmd.backend.elpicpie"><span class="d_inlinecode donthyphenate notranslate">elpicpie</span></a></li><li>    <a href="dmd_backend_evalu8.html" title="dmd.backend.evalu8"><span class="d_inlinecode donthyphenate notranslate">evalu8</span></a></li><li>    <a href="dmd_backend_exh.html" title="dmd.backend.exh"><span class="d_inlinecode donthyphenate notranslate">exh</span></a></li><li>    <a href="dmd_backend_filespec.html" title="dmd.backend.filespec"><span class="d_inlinecode donthyphenate notranslate">filespec</span></a></li><li>    <a href="dmd_backend_fp.html" title="dmd.backend.fp"><span class="d_inlinecode donthyphenate notranslate">fp</span></a></li><li>    <a href="dmd_backend_gdag.html" title="dmd.backend.gdag"><span class="d_inlinecode donthyphenate notranslate">gdag</span></a></li><li>    <a href="dmd_backend_gflow.html" title="dmd.backend.gflow"><span class="d_inlinecode donthyphenate notranslate">gflow</span></a></li><li>    <a href="dmd_backend_global.html" title="dmd.backend.global"><span class="d_inlinecode donthyphenate notranslate">global</span></a></li><li>    <a href="dmd_backend_glocal.html" title="dmd.backend.glocal"><span class="d_inlinecode donthyphenate notranslate">glocal</span></a></li><li>    <a href="dmd_backend_gloop.html" title="dmd.backend.gloop"><span class="d_inlinecode donthyphenate notranslate">gloop</span></a></li><li>    <a href="dmd_backend_go.html" title="dmd.backend.go"><span class="d_inlinecode donthyphenate notranslate">go</span></a></li><li>    <a href="dmd_backend_goh.html" title="dmd.backend.goh"><span class="d_inlinecode donthyphenate notranslate">goh</span></a></li><li>    <a href="dmd_backend_gother.html" title="dmd.backend.gother"><span class="d_inlinecode donthyphenate notranslate">gother</span></a></li><li>    <a href="dmd_backend_gsroa.html" title="dmd.backend.gsroa"><span class="d_inlinecode donthyphenate notranslate">gsroa</span></a></li><li>    <a href="dmd_backend_iasm.html" title="dmd.backend.iasm"><span class="d_inlinecode donthyphenate notranslate">iasm</span></a></li><li>    <a href="dmd_backend_mach.html" title="dmd.backend.mach"><span class="d_inlinecode donthyphenate notranslate">mach</span></a></li><li>    <a href="dmd_backend_machobj.html" title="dmd.backend.machobj"><span class="d_inlinecode donthyphenate notranslate">machobj</span></a></li><li>    <a href="dmd_backend_md5.html" title="dmd.backend.md5"><span class="d_inlinecode donthyphenate notranslate">md5</span></a></li><li>    <a href="dmd_backend_melf.html" title="dmd.backend.melf"><span class="d_inlinecode donthyphenate notranslate">melf</span></a></li><li>    <a href="dmd_backend_mem.html" title="dmd.backend.mem"><span class="d_inlinecode donthyphenate notranslate">mem</span></a></li><li>    <a href="dmd_backend_mscoff.html" title="dmd.backend.mscoff"><span class="d_inlinecode donthyphenate notranslate">mscoff</span></a></li><li>    <a href="dmd_backend_mscoffobj.html" title="dmd.backend.mscoffobj"><span class="d_inlinecode donthyphenate notranslate">mscoffobj</span></a></li><li>    <a href="dmd_backend_newman.html" title="dmd.backend.newman"><span class="d_inlinecode donthyphenate notranslate">newman</span></a></li><li>    <a href="dmd_backend_nteh.html" title="dmd.backend.nteh"><span class="d_inlinecode donthyphenate notranslate">nteh</span></a></li><li>    <a href="dmd_backend_obj.html" title="dmd.backend.obj"><span class="d_inlinecode donthyphenate notranslate">obj</span></a></li><li>    <a href="dmd_backend_oper.html" title="dmd.backend.oper"><span class="d_inlinecode donthyphenate notranslate">oper</span></a></li><li>    <a href="dmd_backend_os.html" title="dmd.backend.os"><span class="d_inlinecode donthyphenate notranslate">os</span></a></li><li>    <a href="dmd_backend_out.html" title="dmd.backend.out"><span class="d_inlinecode donthyphenate notranslate">out</span></a></li><li>    <a href="dmd_backend_outbuf.html" title="dmd.backend.outbuf"><span class="d_inlinecode donthyphenate notranslate">outbuf</span></a></li><li>    <a href="dmd_backend_pdata.html" title="dmd.backend.pdata"><span class="d_inlinecode donthyphenate notranslate">pdata</span></a></li><li>    <a href="dmd_backend_ph2.html" title="dmd.backend.ph2"><span class="d_inlinecode donthyphenate notranslate">ph2</span></a></li><li>    <a href="dmd_backend_ptrntab.html" title="dmd.backend.ptrntab"><span class="d_inlinecode donthyphenate notranslate">ptrntab</span></a></li><li>    <a href="dmd_backend_rtlsym.html" title="dmd.backend.rtlsym"><span class="d_inlinecode donthyphenate notranslate">rtlsym</span></a></li><li>    <a href="dmd_backend_symbol.html" title="dmd.backend.symbol"><span class="d_inlinecode donthyphenate notranslate">symbol</span></a></li><li>    <a href="dmd_backend_ty.html" title="dmd.backend.ty"><span class="d_inlinecode donthyphenate notranslate">ty</span></a></li><li>    <a href="dmd_backend_type.html" title="dmd.backend.type"><span class="d_inlinecode donthyphenate notranslate">type</span></a></li><li>    <a href="dmd_backend_util2.html" title="dmd.backend.util2"><span class="d_inlinecode donthyphenate notranslate">util2</span></a></li><li>    <a href="dmd_backend_var.html" title="dmd.backend.var"><span class="d_inlinecode donthyphenate notranslate">var</span></a></li><li>    <a href="dmd_backend_xmm.html" title="dmd.backend.xmm"><span class="d_inlinecode donthyphenate notranslate">xmm</span></a>
  146   </li></ul></li><li>  <a href="dmd_blockexit.html" title="dmd.blockexit"><span class="d_inlinecode donthyphenate notranslate">blockexit</span></a></li><li>  <a href="dmd_builtin.html" title="dmd.builtin"><span class="d_inlinecode donthyphenate notranslate">builtin</span></a></li><li>  <a href="dmd_canthrow.html" title="dmd.canthrow"><span class="d_inlinecode donthyphenate notranslate">canthrow</span></a></li><li>  <a href="dmd_chkformat.html" title="dmd.chkformat"><span class="d_inlinecode donthyphenate notranslate">chkformat</span></a></li><li>  <a href="dmd_cli.html" title="dmd.cli"><span class="d_inlinecode donthyphenate notranslate">cli</span></a></li><li>  <a href="dmd_clone.html" title="dmd.clone"><span class="d_inlinecode donthyphenate notranslate">clone</span></a></li><li>  <a href="dmd_compiler.html" title="dmd.compiler"><span class="d_inlinecode donthyphenate notranslate">compiler</span></a></li><li>  <a href="dmd_complex.html" title="dmd.complex"><span class="d_inlinecode donthyphenate notranslate">complex</span></a></li><li>  <a href="dmd_cond.html" title="dmd.cond"><span class="d_inlinecode donthyphenate notranslate">cond</span></a></li><li>  <a href="dmd_console.html" title="dmd.console"><span class="d_inlinecode donthyphenate notranslate">console</span></a></li><li>  <a href="dmd_constfold.html" title="dmd.constfold"><span class="d_inlinecode donthyphenate notranslate">constfold</span></a></li><li>  <a href="dmd_cppmangle.html" title="dmd.cppmangle"><span class="d_inlinecode donthyphenate notranslate">cppmangle</span></a></li><li>  <a href="dmd_cppmanglewin.html" title="dmd.cppmanglewin"><span class="d_inlinecode donthyphenate notranslate">cppmanglewin</span></a></li><li>  <a href="dmd_ctfeexpr.html" title="dmd.ctfeexpr"><span class="d_inlinecode donthyphenate notranslate">ctfeexpr</span></a></li><li>  <a href="dmd_ctorflow.html" title="dmd.ctorflow"><span class="d_inlinecode donthyphenate notranslate">ctorflow</span></a></li><li>  <a href="dmd_dcast.html" title="dmd.dcast"><span class="d_inlinecode donthyphenate notranslate">dcast</span></a></li><li>  <a href="dmd_dclass.html" title="dmd.dclass"><span class="d_inlinecode donthyphenate notranslate">dclass</span></a></li><li>  <a href="dmd_declaration.html" title="dmd.declaration"><span class="d_inlinecode donthyphenate notranslate">declaration</span></a></li><li>  <a href="dmd_delegatize.html" title="dmd.delegatize"><span class="d_inlinecode donthyphenate notranslate">delegatize</span></a></li><li>  <a href="dmd_denum.html" title="dmd.denum"><span class="d_inlinecode donthyphenate notranslate">denum</span></a></li><li>  <a href="dmd_dimport.html" title="dmd.dimport"><span class="d_inlinecode donthyphenate notranslate">dimport</span></a></li><li>  <a href="dmd_dinifile.html" title="dmd.dinifile"><span class="d_inlinecode donthyphenate notranslate">dinifile</span></a></li><li>  <a href="dmd_dinterpret.html" title="dmd.dinterpret"><span class="d_inlinecode donthyphenate notranslate">dinterpret</span></a></li><li>  <a href="dmd_dmacro.html" title="dmd.dmacro"><span class="d_inlinecode donthyphenate notranslate">dmacro</span></a></li><li>  <a href="dmd_dmangle.html" title="dmd.dmangle"><span class="d_inlinecode donthyphenate notranslate">dmangle</span></a></li><li>  <a href="dmd_dmodule.html" title="dmd.dmodule"><span class="d_inlinecode donthyphenate notranslate">dmodule</span></a></li><li>  <a href="dmd_dmsc.html" title="dmd.dmsc"><span class="d_inlinecode donthyphenate notranslate">dmsc</span></a></li><li>  <a href="dmd_doc.html" title="dmd.doc"><span class="d_inlinecode donthyphenate notranslate">doc</span></a></li><li>  <a href="dmd_dscope.html" title="dmd.dscope"><span class="d_inlinecode donthyphenate notranslate">dscope</span></a></li><li>  <a href="dmd_dstruct.html" title="dmd.dstruct"><span class="d_inlinecode donthyphenate notranslate">dstruct</span></a></li><li>  <a href="dmd_dsymbol.html" title="dmd.dsymbol"><span class="d_inlinecode donthyphenate notranslate">dsymbol</span></a></li><li>  <a href="dmd_dsymbolsem.html" title="dmd.dsymbolsem"><span class="d_inlinecode donthyphenate notranslate">dsymbolsem</span></a></li><li>  <a href="dmd_dtemplate.html" title="dmd.dtemplate"><span class="d_inlinecode donthyphenate notranslate">dtemplate</span></a></li><li>  <a href="dmd_dtoh.html" title="dmd.dtoh"><span class="d_inlinecode donthyphenate notranslate">dtoh</span></a></li><li>  <a href="dmd_dversion.html" title="dmd.dversion"><span class="d_inlinecode donthyphenate notranslate">dversion</span></a></li><li>  <a href="dmd_e2ir.html" title="dmd.e2ir"><span class="d_inlinecode donthyphenate notranslate">e2ir</span></a></li><li>  <a href="dmd_eh.html" title="dmd.eh"><span class="d_inlinecode donthyphenate notranslate">eh</span></a></li><li>  <a href="dmd_entity.html" title="dmd.entity"><span class="d_inlinecode donthyphenate notranslate">entity</span></a></li><li>  <a href="dmd_env.html" title="dmd.env"><span class="d_inlinecode donthyphenate notranslate">env</span></a></li><li>  <a href="dmd_errors.html" title="dmd.errors"><span class="d_inlinecode donthyphenate notranslate">errors</span></a></li><li>  <a href="dmd_escape.html" title="dmd.escape"><span class="d_inlinecode donthyphenate notranslate">escape</span></a></li><li>  <a href="dmd_expression.html" title="dmd.expression"><span class="d_inlinecode donthyphenate notranslate">expression</span></a></li><li>  <a href="dmd_expressionsem.html" title="dmd.expressionsem"><span class="d_inlinecode donthyphenate notranslate">expressionsem</span></a></li><li>  <a href="dmd_filecache.html" title="dmd.filecache"><span class="d_inlinecode donthyphenate notranslate">filecache</span></a></li><li>  <a href="dmd_foreachvar.html" title="dmd.foreachvar"><span class="d_inlinecode donthyphenate notranslate">foreachvar</span></a></li><li>  <a href="dmd_frontend.html" title="dmd.frontend"><span class="d_inlinecode donthyphenate notranslate">frontend</span></a></li><li>  <a href="dmd_func.html" title="dmd.func"><span class="d_inlinecode donthyphenate notranslate">func</span></a></li><li>  <a href="dmd_globals.html" title="dmd.globals"><span class="d_inlinecode donthyphenate notranslate">globals</span></a></li><li>  <a href="dmd_glue.html" title="dmd.glue"><span class="d_inlinecode donthyphenate notranslate">glue</span></a></li><li>  <a href="dmd_gluelayer.html" title="dmd.gluelayer"><span class="d_inlinecode donthyphenate notranslate">gluelayer</span></a></li><li>  <a href="dmd_hdrgen.html" title="dmd.hdrgen"><span class="d_inlinecode donthyphenate notranslate">hdrgen</span></a></li><li>  <a href="dmd_iasm.html" title="dmd.iasm"><span class="d_inlinecode donthyphenate notranslate">iasm</span></a></li><li>  <a href="dmd_iasmdmd.html" title="dmd.iasmdmd"><span class="d_inlinecode donthyphenate notranslate">iasmdmd</span></a></li><li>  <a href="dmd_iasmgcc.html" title="dmd.iasmgcc"><span class="d_inlinecode donthyphenate notranslate">iasmgcc</span></a></li><li>  <a href="dmd_id.html" title="dmd.id"><span class="d_inlinecode donthyphenate notranslate">id</span></a></li><li>  <a href="dmd_identifier.html" title="dmd.identifier"><span class="d_inlinecode donthyphenate notranslate">identifier</span></a></li><li>  <a href="dmd_impcnvtab.html" title="dmd.impcnvtab"><span class="d_inlinecode donthyphenate notranslate">impcnvtab</span></a></li><li>  <a href="dmd_imphint.html" title="dmd.imphint"><span class="d_inlinecode donthyphenate notranslate">imphint</span></a></li><li>  <a href="dmd_init.html" title="dmd.init"><span class="d_inlinecode donthyphenate notranslate">init</span></a></li><li>  <a href="dmd_initsem.html" title="dmd.initsem"><span class="d_inlinecode donthyphenate notranslate">initsem</span></a></li><li>  <a href="dmd_inline.html" title="dmd.inline"><span class="d_inlinecode donthyphenate notranslate">inline</span></a></li><li>  <a href="dmd_inlinecost.html" title="dmd.inlinecost"><span class="d_inlinecode donthyphenate notranslate">inlinecost</span></a></li><li>  <a href="dmd_intrange.html" title="dmd.intrange"><span class="d_inlinecode donthyphenate notranslate">intrange</span></a></li><li>  <a href="dmd_json.html" title="dmd.json"><span class="d_inlinecode donthyphenate notranslate">json</span></a></li><li>  <a href="dmd_lambdacomp.html" title="dmd.lambdacomp"><span class="d_inlinecode donthyphenate notranslate">lambdacomp</span></a></li><li>  <a href="dmd_lexer.html" title="dmd.lexer"><span class="d_inlinecode donthyphenate notranslate">lexer</span></a></li><li>  <a href="dmd_lib.html" title="dmd.lib"><span class="d_inlinecode donthyphenate notranslate">lib</span></a></li><li>  <a href="dmd_libelf.html" title="dmd.libelf"><span class="d_inlinecode donthyphenate notranslate">libelf</span></a></li><li>  <a href="dmd_libomf.html" title="dmd.libomf"><span class="d_inlinecode donthyphenate notranslate">libomf</span></a></li><li>  <a href="dmd_link.html" title="dmd.link"><span class="d_inlinecode donthyphenate notranslate">link</span></a></li><li>  <a href="dmd_mars.html" title="dmd.mars"><span class="d_inlinecode donthyphenate notranslate">mars</span></a></li><li>  <a href="dmd_mtype.html" title="dmd.mtype"><span class="d_inlinecode donthyphenate notranslate">mtype</span></a></li><li>  <a href="dmd_nogc.html" title="dmd.nogc"><span class="d_inlinecode donthyphenate notranslate">nogc</span></a></li><li>  <a href="dmd_nspace.html" title="dmd.nspace"><span class="d_inlinecode donthyphenate notranslate">nspace</span></a></li><li>  <a href="dmd_ob.html" title="dmd.ob"><span class="d_inlinecode donthyphenate notranslate">ob</span></a></li><li>  <a href="dmd_objc.html" title="dmd.objc"><span class="d_inlinecode donthyphenate notranslate">objc</span></a></li><li>  <a href="dmd_objc_glue.html" title="dmd.objc_glue"><span class="d_inlinecode donthyphenate notranslate">objc_glue</span></a></li><li>  <a href="dmd_opover.html" title="dmd.opover"><span class="d_inlinecode donthyphenate notranslate">opover</span></a></li><li>  <a href="dmd_optimize.html" title="dmd.optimize"><span class="d_inlinecode donthyphenate notranslate">optimize</span></a></li><li>  <a href="dmd_parse.html" title="dmd.parse"><span class="d_inlinecode donthyphenate notranslate">parse</span></a></li><li>  <a href="dmd_parsetimevisitor.html" title="dmd.parsetimevisitor"><span class="d_inlinecode donthyphenate notranslate">parsetimevisitor</span></a></li><li>  <a href="dmd_permissivevisitor.html" title="dmd.permissivevisitor"><span class="d_inlinecode donthyphenate notranslate">permissivevisitor</span></a></li><li>  <a href="dmd_printast.html" title="dmd.printast"><span class="d_inlinecode donthyphenate notranslate">printast</span></a></li><li>  <h7><span class="d_inlinecode donthyphenate notranslate">root</span></h7><ul><li>    <a href="dmd_root_aav.html" title="dmd.root.aav"><span class="d_inlinecode donthyphenate notranslate">aav</span></a></li><li>    <a href="dmd_root_array.html" title="dmd.root.array"><span class="d_inlinecode donthyphenate notranslate">array</span></a></li><li>    <a href="dmd_root_bitarray.html" title="dmd.root.bitarray"><span class="d_inlinecode donthyphenate notranslate">bitarray</span></a></li><li>    <a href="dmd_root_ctfloat.html" title="dmd.root.ctfloat"><span class="d_inlinecode donthyphenate notranslate">ctfloat</span></a></li><li>    <a href="dmd_root_file.html" title="dmd.root.file"><span class="d_inlinecode donthyphenate notranslate">file</span></a></li><li>    <a href="dmd_root_filename.html" title="dmd.root.filename"><span class="d_inlinecode donthyphenate notranslate">filename</span></a></li><li>    <a href="dmd_root_hash.html" title="dmd.root.hash"><span class="d_inlinecode donthyphenate notranslate">hash</span></a></li><li>    <a href="dmd_root_longdouble.html" title="dmd.root.longdouble"><span class="d_inlinecode donthyphenate notranslate">longdouble</span></a></li><li>    <a href="dmd_root_man.html" title="dmd.root.man"><span class="d_inlinecode donthyphenate notranslate">man</span></a></li><li>    <a href="dmd_root_outbuffer.html" title="dmd.root.outbuffer"><span class="d_inlinecode donthyphenate notranslate">outbuffer</span></a></li><li>    <a href="dmd_root_port.html" title="dmd.root.port"><span class="d_inlinecode donthyphenate notranslate">port</span></a></li><li>    <a href="dmd_root_region.html" title="dmd.root.region"><span class="d_inlinecode donthyphenate notranslate">region</span></a></li><li>    <a href="dmd_root_response.html" title="dmd.root.response"><span class="d_inlinecode donthyphenate notranslate">response</span></a></li><li>    <a href="dmd_root_rmem.html" title="dmd.root.rmem"><span class="d_inlinecode donthyphenate notranslate">rmem</span></a></li><li>    <a href="dmd_root_rootobject.html" title="dmd.root.rootobject"><span class="d_inlinecode donthyphenate notranslate">rootobject</span></a></li><li>    <a href="dmd_root_speller.html" title="dmd.root.speller"><span class="d_inlinecode donthyphenate notranslate">speller</span></a></li><li>    <a href="dmd_root_string.html" title="dmd.root.string"><span class="d_inlinecode donthyphenate notranslate">string</span></a></li><li>    <a href="dmd_root_stringtable.html" title="dmd.root.stringtable"><span class="d_inlinecode donthyphenate notranslate">stringtable</span></a></li><li>    <a href="dmd_root_strtold.html" title="dmd.root.strtold"><span class="d_inlinecode donthyphenate notranslate">strtold</span></a>
  147   </li></ul></li><li>  <a href="dmd_s2ir.html" title="dmd.s2ir"><span class="d_inlinecode donthyphenate notranslate">s2ir</span></a></li><li>  <a href="dmd_safe.html" title="dmd.safe"><span class="d_inlinecode donthyphenate notranslate">safe</span></a></li><li>  <a href="dmd_sapply.html" title="dmd.sapply"><span class="d_inlinecode donthyphenate notranslate">sapply</span></a></li><li>  <a href="dmd_scanelf.html" title="dmd.scanelf"><span class="d_inlinecode donthyphenate notranslate">scanelf</span></a></li><li>  <a href="dmd_scanomf.html" title="dmd.scanomf"><span class="d_inlinecode donthyphenate notranslate">scanomf</span></a></li><li>  <a href="dmd_semantic2.html" title="dmd.semantic2"><span class="d_inlinecode donthyphenate notranslate">semantic2</span></a></li><li>  <a href="dmd_semantic3.html" title="dmd.semantic3"><span class="d_inlinecode donthyphenate notranslate">semantic3</span></a></li><li>  <a href="dmd_sideeffect.html" title="dmd.sideeffect"><span class="d_inlinecode donthyphenate notranslate">sideeffect</span></a></li><li>  <a href="dmd_statement.html" title="dmd.statement"><span class="d_inlinecode donthyphenate notranslate">statement</span></a></li><li>  <a href="dmd_statement_rewrite_walker.html" title="dmd.statement_rewrite_walker"><span class="d_inlinecode donthyphenate notranslate">statement_rewrite_walker</span></a></li><li>  <a href="dmd_statementsem.html" title="dmd.statementsem"><span class="d_inlinecode donthyphenate notranslate">statementsem</span></a></li><li>  <a href="dmd_staticassert.html" title="dmd.staticassert"><span class="d_inlinecode donthyphenate notranslate">staticassert</span></a></li><li>  <a href="dmd_staticcond.html" title="dmd.staticcond"><span class="d_inlinecode donthyphenate notranslate">staticcond</span></a></li><li>  <a href="dmd_stmtstate.html" title="dmd.stmtstate"><span class="d_inlinecode donthyphenate notranslate">stmtstate</span></a></li><li>  <a href="dmd_strictvisitor.html" title="dmd.strictvisitor"><span class="d_inlinecode donthyphenate notranslate">strictvisitor</span></a></li><li>  <a href="dmd_target.html" title="dmd.target"><span class="d_inlinecode donthyphenate notranslate">target</span></a></li><li>  <a href="dmd_templateparamsem.html" title="dmd.templateparamsem"><span class="d_inlinecode donthyphenate notranslate">templateparamsem</span></a></li><li>  <a href="dmd_tocsym.html" title="dmd.tocsym"><span class="d_inlinecode donthyphenate notranslate">tocsym</span></a></li><li>  <a href="dmd_toctype.html" title="dmd.toctype"><span class="d_inlinecode donthyphenate notranslate">toctype</span></a></li><li>  <a href="dmd_tocvdebug.html" title="dmd.tocvdebug"><span class="d_inlinecode donthyphenate notranslate">tocvdebug</span></a></li><li>  <a href="dmd_todt.html" title="dmd.todt"><span class="d_inlinecode donthyphenate notranslate">todt</span></a></li><li>  <a href="dmd_toir.html" title="dmd.toir"><span class="d_inlinecode donthyphenate notranslate">toir</span></a></li><li>  <a href="dmd_tokens.html" title="dmd.tokens"><span class="d_inlinecode donthyphenate notranslate">tokens</span></a></li><li>  <a href="dmd_toobj.html" title="dmd.toobj"><span class="d_inlinecode donthyphenate notranslate">toobj</span></a></li><li>  <a href="dmd_traits.html" title="dmd.traits"><span class="d_inlinecode donthyphenate notranslate">traits</span></a></li><li>  <a href="dmd_transitivevisitor.html" title="dmd.transitivevisitor"><span class="d_inlinecode donthyphenate notranslate">transitivevisitor</span></a></li><li>  <a href="dmd_typesem.html" title="dmd.typesem"><span class="d_inlinecode donthyphenate notranslate">typesem</span></a></li><li>  <a href="dmd_typinf.html" title="dmd.typinf"><span class="d_inlinecode donthyphenate notranslate">typinf</span></a></li><li>  <a href="dmd_utf.html" title="dmd.utf"><span class="d_inlinecode donthyphenate notranslate">utf</span></a></li><li>  <a href="dmd_utils.html" title="dmd.utils"><span class="d_inlinecode donthyphenate notranslate">utils</span></a></li><li>  <a href="dmd_visitor.html" title="dmd.visitor"><span class="d_inlinecode donthyphenate notranslate">visitor</span></a></li><li>  <a href="dmd_vsoptions.html" title="dmd.vsoptions"><span class="d_inlinecode donthyphenate notranslate">vsoptions</span></a>
  148 </li></ul>
  149 </li>
  150 
  151 <li class='expand-container modlist-submenu-rt'><a class='expand-toggle' href='#'><span><em class="tt">rt</em></span></a>
  152 <ul><li>  <a href="rt_aApply.html" title="rt.aApply"><span class="d_inlinecode donthyphenate notranslate">aApply</span></a></li><li>  <a href="rt_aApplyR.html" title="rt.aApplyR"><span class="d_inlinecode donthyphenate notranslate">aApplyR</span></a></li><li>  <a href="rt_aaA.html" title="rt.aaA"><span class="d_inlinecode donthyphenate notranslate">aaA</span></a></li><li>  <a href="rt_adi.html" title="rt.adi"><span class="d_inlinecode donthyphenate notranslate">adi</span></a></li><li>  <a href="rt_alloca.html" title="rt.alloca"><span class="d_inlinecode donthyphenate notranslate">alloca</span></a></li><li>  <a href="rt_arrayassign.html" title="rt.arrayassign"><span class="d_inlinecode donthyphenate notranslate">arrayassign</span></a></li><li>  <a href="rt_arraycat.html" title="rt.arraycat"><span class="d_inlinecode donthyphenate notranslate">arraycat</span></a></li><li>  <h7><span class="d_inlinecode donthyphenate notranslate">backtrace</span></h7><ul><li>    <a href="rt_backtrace_dwarf.html" title="rt.backtrace.dwarf"><span class="d_inlinecode donthyphenate notranslate">dwarf</span></a></li><li>    <a href="rt_backtrace_elf.html" title="rt.backtrace.elf"><span class="d_inlinecode donthyphenate notranslate">elf</span></a></li><li>    <a href="rt_backtrace_macho.html" title="rt.backtrace.macho"><span class="d_inlinecode donthyphenate notranslate">macho</span></a>
  153   </li></ul></li><li>  <a href="rt_cast_.html" title="rt.cast_"><span class="d_inlinecode donthyphenate notranslate">cast_</span></a></li><li>  <a href="rt_cmath2.html" title="rt.cmath2"><span class="d_inlinecode donthyphenate notranslate">cmath2</span></a></li><li>  <a href="rt_config.html" title="rt.config"><span class="d_inlinecode donthyphenate notranslate">config</span></a></li><li>  <a href="rt_cover.html" title="rt.cover"><span class="d_inlinecode donthyphenate notranslate">cover</span></a></li><li>  <a href="rt_critical_.html" title="rt.critical_"><span class="d_inlinecode donthyphenate notranslate">critical_</span></a></li><li>  <a href="rt_deh.html" title="rt.deh"><span class="d_inlinecode donthyphenate notranslate">deh</span></a></li><li>  <a href="rt_deh_win32.html" title="rt.deh_win32"><span class="d_inlinecode donthyphenate notranslate">deh_win32</span></a></li><li>  <a href="rt_deh_win64_posix.html" title="rt.deh_win64_posix"><span class="d_inlinecode donthyphenate notranslate">deh_win64_posix</span></a></li><li>  <a href="rt_dmain2.html" title="rt.dmain2"><span class="d_inlinecode donthyphenate notranslate">dmain2</span></a></li><li>  <a href="rt_dwarfeh.html" title="rt.dwarfeh"><span class="d_inlinecode donthyphenate notranslate">dwarfeh</span></a></li><li>  <a href="rt_ehalloc.html" title="rt.ehalloc"><span class="d_inlinecode donthyphenate notranslate">ehalloc</span></a></li><li>  <a href="rt_invariant.html" title="rt.invariant"><span class="d_inlinecode donthyphenate notranslate">invariant</span></a></li><li>  <a href="rt_lifetime.html" title="rt.lifetime"><span class="d_inlinecode donthyphenate notranslate">lifetime</span></a></li><li>  <a href="rt_llmath.html" title="rt.llmath"><span class="d_inlinecode donthyphenate notranslate">llmath</span></a></li><li>  <a href="rt_memory.html" title="rt.memory"><span class="d_inlinecode donthyphenate notranslate">memory</span></a></li><li>  <a href="rt_memset.html" title="rt.memset"><span class="d_inlinecode donthyphenate notranslate">memset</span></a></li><li>  <a href="rt_minfo.html" title="rt.minfo"><span class="d_inlinecode donthyphenate notranslate">minfo</span></a></li><li>  <a href="rt_monitor_.html" title="rt.monitor_"><span class="d_inlinecode donthyphenate notranslate">monitor_</span></a></li><li>  <a href="rt_profilegc.html" title="rt.profilegc"><span class="d_inlinecode donthyphenate notranslate">profilegc</span></a></li><li>  <a href="rt_qsort.html" title="rt.qsort"><span class="d_inlinecode donthyphenate notranslate">qsort</span></a></li><li>  <a href="rt_sections.html" title="rt.sections"><span class="d_inlinecode donthyphenate notranslate">sections</span></a></li><li>  <a href="rt_sections_android.html" title="rt.sections_android"><span class="d_inlinecode donthyphenate notranslate">sections_android</span></a></li><li>  <a href="rt_sections_darwin_64.html" title="rt.sections_darwin_64"><span class="d_inlinecode donthyphenate notranslate">sections_darwin_64</span></a></li><li>  <a href="rt_sections_elf_shared.html" title="rt.sections_elf_shared"><span class="d_inlinecode donthyphenate notranslate">sections_elf_shared</span></a></li><li>  <a href="rt_sections_osx_x86.html" title="rt.sections_osx_x86"><span class="d_inlinecode donthyphenate notranslate">sections_osx_x86</span></a></li><li>  <a href="rt_sections_osx_x86_64.html" title="rt.sections_osx_x86_64"><span class="d_inlinecode donthyphenate notranslate">sections_osx_x86_64</span></a></li><li>  <a href="rt_sections_solaris.html" title="rt.sections_solaris"><span class="d_inlinecode donthyphenate notranslate">sections_solaris</span></a></li><li>  <a href="rt_sections_win32.html" title="rt.sections_win32"><span class="d_inlinecode donthyphenate notranslate">sections_win32</span></a></li><li>  <a href="rt_sections_win64.html" title="rt.sections_win64"><span class="d_inlinecode donthyphenate notranslate">sections_win64</span></a></li><li>  <a href="rt_tlsgc.html" title="rt.tlsgc"><span class="d_inlinecode donthyphenate notranslate">tlsgc</span></a></li><li>  <a href="rt_trace.html" title="rt.trace"><span class="d_inlinecode donthyphenate notranslate">trace</span></a></li><li>  <a href="rt_tracegc.html" title="rt.tracegc"><span class="d_inlinecode donthyphenate notranslate">tracegc</span></a></li><li>  <a href="rt_unwind.html" title="rt.unwind"><span class="d_inlinecode donthyphenate notranslate">unwind</span></a></li><li>  <h7><span class="d_inlinecode donthyphenate notranslate">util</span></h7><ul><li>    <h7><span class="d_inlinecode donthyphenate notranslate">container</span></h7><ul><li>      <a href="rt_util_container_array.html" title="rt.util.container.array"><span class="d_inlinecode donthyphenate notranslate">array</span></a></li><li>      <a href="rt_util_container_common.html" title="rt.util.container.common"><span class="d_inlinecode donthyphenate notranslate">common</span></a></li><li>      <a href="rt_util_container_hashtab.html" title="rt.util.container.hashtab"><span class="d_inlinecode donthyphenate notranslate">hashtab</span></a></li><li>      <a href="rt_util_container_treap.html" title="rt.util.container.treap"><span class="d_inlinecode donthyphenate notranslate">treap</span></a>
  154     </li></ul></li><li>    <a href="rt_util_random.html" title="rt.util.random"><span class="d_inlinecode donthyphenate notranslate">random</span></a></li><li>    <a href="rt_util_typeinfo.html" title="rt.util.typeinfo"><span class="d_inlinecode donthyphenate notranslate">typeinfo</span></a></li><li>    <a href="rt_util_utility.html" title="rt.util.utility"><span class="d_inlinecode donthyphenate notranslate">utility</span></a>
  155   </li></ul>
  156 </li></ul>
  157 </li></ul>
  158 </div>
  159     <div class="hyphenate" id="content">        
  160 <div id="tools"><div >  <div class="tip smallprint">        <a href="https://issues.dlang.org/enter_bug.cgi?bug_file_loc=http%3A%2F%2Fdlang.org/phobos/&amp;component=phobos&amp;op_sys=All&amp;priority=P3&amp;product=D&amp;rep_platform=All&amp;short_desc=%5Bstd.process%5D&amp;version=D2&amp;bug_severity=enhancement">Report a bug</a>
  161         <div >          If you spot a problem with this page, click here to create a Bugzilla issue.
  162         </div>
  163     </div>
  164     <div class="tip smallprint">        <a href="https://github.com/dlang/phobos/edit/master/std/process.d">Improve this page</a>
  165         <div >          Quickly fork, edit online, and submit a pull request for this page.
  166             Requires a signed-in GitHub account. This works well for small changes.
  167             If you'd like to make larger changes you may want to consider using
  168             a local clone.
  169         </div>
  170     </div>
  171 </div></div>
  172         <h1><span class="d_title">std.process</span></h1>
  173         <div class="quickindex" id="quickindex"></div>
  174         <div class="summary">Functions for starting and interacting with other processes, and for
  175 working with the current process' execution environment.
  176 </div><div class="val"><p class="keyval Section"><span class="key keySection">Process handling</span>
  177 <ul><li>    <a href="#spawnProcess"><span class="d_inlinecode donthyphenate notranslate">spawnProcess</span></a> spawns a new process, optionally assigning it an
  178     arbitrary set of standard input, output, and error streams.
  179     The function returns immediately, leaving the child process to execute
  180     in parallel with its parent.  All other functions in this module that
  181     spawn processes are built around <span class="d_inlinecode donthyphenate notranslate">spawnProcess</span>.</li>
  182 <li>    <a href="#wait"><span class="d_inlinecode donthyphenate notranslate">wait</span></a> makes the parent process wait for a child process to
  183     terminate.  In general one should always do this, to avoid
  184     child processes becoming "zombies" when the parent process exits.
  185     Scope guards are perfect for this – see the <a href="#spawnProcess"><span class="d_inlinecode donthyphenate notranslate">spawnProcess</span></a>
  186     documentation for examples.  <a href="#tryWait"><span class="d_inlinecode donthyphenate notranslate">tryWait</span></a> is similar to <span class="d_inlinecode donthyphenate notranslate">wait</span>,
  187     but does not block if the process has not yet terminated.</li>
  188 <li>    <a href="#pipeProcess"><span class="d_inlinecode donthyphenate notranslate">pipeProcess</span></a> also spawns a child process which runs
  189     in parallel with its parent.  However, instead of taking
  190     arbitrary streams, it automatically creates a set of
  191     pipes that allow the parent to communicate with the child
  192     through the child's standard input, output, and/or error streams.
  193     This function corresponds roughly to C's <span class="d_inlinecode donthyphenate notranslate">popen</span> function.</li>
  194 <li>    <a href="#execute"><span class="d_inlinecode donthyphenate notranslate">execute</span></a> starts a new process and waits for it
  195     to complete before returning.  Additionally, it captures
  196     the process' standard output and error streams and returns
  197     the output of these as a string.</li>
  198 <li>    <a href="#spawnShell"><span class="d_inlinecode donthyphenate notranslate">spawnShell</span></a>, <a href="#pipeShell"><span class="d_inlinecode donthyphenate notranslate">pipeShell</span></a> and <a href="#executeShell"><span class="d_inlinecode donthyphenate notranslate">executeShell</span></a> work like
  199     <span class="d_inlinecode donthyphenate notranslate">spawnProcess</span>, <span class="d_inlinecode donthyphenate notranslate">pipeProcess</span> and <span class="d_inlinecode donthyphenate notranslate">execute</span>, respectively,
  200     except that they take a single command string and run it through
  201     the current user's default command interpreter.
  202     <span class="d_inlinecode donthyphenate notranslate">executeShell</span> corresponds roughly to C's <span class="d_inlinecode donthyphenate notranslate">system</span> function.</li>
  203 <li>    <a href="#kill"><span class="d_inlinecode donthyphenate notranslate">kill</span></a> attempts to terminate a running process.</li>
  204 </ul>
  205 <div class="blankline"></div>
  206 
  207 The following table compactly summarises the different process creation
  208 functions and how they relate to each other:
  209 <table class="book"><caption></caption>    <tr><th scope="col"></th>
  210          <th scope="col">Runs program directly</th>
  211          <th scope="col">Runs shell command</th></tr>
  212     <tr><td>Low-level process creation</td>
  213          <td><a href="#spawnProcess"><span class="d_inlinecode donthyphenate notranslate">spawnProcess</span></a></td>
  214          <td><a href="#spawnShell"><span class="d_inlinecode donthyphenate notranslate">spawnShell</span></a></td></tr>
  215     <tr><td>Automatic input/output redirection using pipes</td>
  216          <td><a href="#pipeProcess"><span class="d_inlinecode donthyphenate notranslate">pipeProcess</span></a></td>
  217          <td><a href="#pipeShell"><span class="d_inlinecode donthyphenate notranslate">pipeShell</span></a></td></tr>
  218     <tr><td>Execute and wait for completion, collect output</td>
  219          <td><a href="#execute"><span class="d_inlinecode donthyphenate notranslate">execute</span></a></td>
  220          <td><a href="#executeShell"><span class="d_inlinecode donthyphenate notranslate">executeShell</span></a></td></tr>
  221 </table>
  222 
  223 </p></div>
  224 <div class="val"><p class="keyval Section"><span class="key keySection">Other functionality</span>
  225 <ul><li>    <a href="#pipe"><span class="d_inlinecode donthyphenate notranslate">pipe</span></a> is used to create unidirectional pipes.</li>
  226 <li>    <a href="#environment"><span class="d_inlinecode donthyphenate notranslate">environment</span></a> is an interface through which the current process'
  227     environment variables can be read and manipulated.</li>
  228 <li>    <a href="#escapeShellCommand"><span class="d_inlinecode donthyphenate notranslate">escapeShellCommand</span></a> and <a href="#escapeShellFileName"><span class="d_inlinecode donthyphenate notranslate">escapeShellFileName</span></a> are useful
  229     for constructing shell command lines in a portable way.</li>
  230 </ul>
  231 
  232 </p></div>
  233 <div class="keyval Authors"><span class="key keyAuthors">Authors:</span> <div class="val valAuthors"><a href="https://github.com/kyllingstad">Lars Tandle Kyllingstad</a>,
  234     <a href="https://github.com/schveiguy">Steven Schveighoffer</a>,
  235     <a href="http://thecybershadow.net">Vladimir Panteleev</a>
  236 </div></div>
  237 <div class="keyval License"><span class="key keyLicense">License:</span> <div class="val valLicense"><a href="http://www.boost.org/LICENSE_1_0.txt">Boost License 1.0</a>.
  238 </div></div>
  239 <div class="val"><p class="keyval Section"><span class="key keySection">Source</span>
  240 <span class="phobos_src"><a class="https" href="https://github.com/dlang/phobos/blob/master/std/process.d">std/process.d</a></span>
  241 </p></div>
  242 <div class="val"><p class="keyval Section"><span class="key keySection">Note</span>
  243 Most of the functionality in this module is not available on iOS, tvOS
  244 and watchOS. The only functions available on those platforms are:
  245 <a href="#environment"><span class="d_inlinecode donthyphenate notranslate">environment</span></a>, <a href="#thisProcessID"><span class="d_inlinecode donthyphenate notranslate">thisProcessID</span></a> and <a href="#thisThreadID"><span class="d_inlinecode donthyphenate notranslate">thisThreadID</span></a>.</p></div>
  246 
  247 <dl><dt class="d_decl"><div ><span class="def-anchor" id=".environment"></span><div class="quickindex" id="quickindex.environment"></div>abstract class <span class="def-anchor" id="environment"></span><code class="ddoc_psymbol">environment</code>;
  248 <br></div></dt>
  249 <dd><div class="summary">Manipulates environment variables using an associative-array-like
  250 interface.
  251 </div><div class="description">This class contains only static methods, and cannot be instantiated.
  252 See below for examples of use.</div>
  253 
  254 <dl><dt class="d_decl"><div ><span class="def-anchor" id=".environment.opIndex"></span><div class="quickindex" id="quickindex.environment.opIndex"></div>static @safe string <span class="def-anchor" id="opIndex"></span><code class="ddoc_psymbol">opIndex</code>(scope const(char)[] <code class="ddoc_param">name</code>);
  255 <br></div></dt>
  256 <dd><div class="summary">    Retrieves the value of the environment variable with the given <span class="d_inlinecode donthyphenate notranslate"><code class="ddoc_param">name</code></span>.
  257 <pre class="d_code notranslate"><span class="d_keyword">auto</span> path = environment[<span class="d_string">"PATH"</span>];
  258 </pre>
  259 </div><div class="keyval Throws"><span class="key keyThrows">Throws:</span> <div class="val valThrows"><a href="object.html#.Exception""><span class="d_inlinecode donthyphenate notranslate">Exception</span></a> if the environment variable does not exist,
  260     or <a href="std_utf.html#.UTFException"><span class="d_inlinecode donthyphenate notranslate">std.utf.UTFException</span></a> if the variable contains invalid UTF-16
  261     characters (Windows only).
  262 
  263 </div></div>
  264 <div class="keyval SeeAlso"><span class="key keySeeAlso">See Also:</span> <div class="val valSeeAlso"><a href="#environment.get"><span class="d_inlinecode donthyphenate notranslate">environment.get</span></a>, which doesn't throw on failure.</div></div>
  265 
  266 </dd>
  267 <dt class="d_decl"><div ><span class="def-anchor" id=".environment.get"></span><div class="quickindex" id="quickindex.environment.get"></div>static @safe string <span class="def-anchor" id="get"></span><code class="ddoc_psymbol">get</code>(scope const(char)[] <code class="ddoc_param">name</code>, string <code class="ddoc_param">defaultValue</code> = null);
  268 <br></div></dt>
  269 <dd><div class="summary">Retrieves the value of the environment variable with the given <span class="d_inlinecode donthyphenate notranslate"><code class="ddoc_param">name</code></span>,
  270     or a default value if the variable doesn't exist.
  271 </div><div class="description">    Unlike <a href="#environment.opIndex"><span class="d_inlinecode donthyphenate notranslate">environment.opIndex</span></a>, this function never throws on Posix.
  272 <pre class="d_code notranslate"><span class="d_keyword">auto</span> sh = environment.<span class="d_psymbol">get</span>(<span class="d_string">"SHELL"</span>, <span class="d_string">"/bin/sh"</span>);
  273 </pre>
  274     This function is also useful in checking for the existence of an
  275     environment variable.
  276 <pre class="d_code notranslate"><span class="d_keyword">auto</span> myVar = environment.<span class="d_psymbol">get</span>(<span class="d_string">"MYVAR"</span>);
  277 <span class="d_keyword">if</span> (myVar <span class="d_keyword">is</span> <span class="d_keyword">null</span>)
  278 {
  279     <span class="d_comment">// Environment variable doesn't exist.
  280 </span>    <span class="d_comment">// Note that we have to use 'is' for the comparison, since
  281 </span>    <span class="d_comment">// myVar == null is also true if the variable exists but is
  282 </span>    <span class="d_comment">// empty.
  283 </span>}
  284 </pre>
  285 </div>
  286 <div class="keyval Parameters"><span class="key keyParameters">Parameters:</span> <div class="val valParameters"><table class="params"><tr class="param"><td class="param_id">const(char)[] <code class="ddoc_param">name</code></td>
  287 <td class="param_desc">name of the environment variable to retrieve</td></tr>
  288 <tr class="param"><td class="param_id">string <code class="ddoc_param">defaultValue</code></td>
  289 <td class="param_desc">default value to return if the environment variable doesn't exist.</td></tr>
  290 </table></div></div>
  291 <div class="keyval Returns"><span class="key keyReturns">Returns:</span> <div class="val valReturns">the value of the environment variable if found, otherwise
  292         <span class="d_inlinecode donthyphenate notranslate">null</span> if the environment doesn't exist.
  293 
  294 </div></div>
  295 <div class="keyval Throws"><span class="key keyThrows">Throws:</span> <div class="val valThrows"><a href="std_utf.html#.UTFException"><span class="d_inlinecode donthyphenate notranslate">std.utf.UTFException</span></a> if the variable contains invalid UTF-16
  296     characters (Windows only).</div></div>
  297 
  298 </dd>
  299 <dt class="d_decl"><div ><span class="def-anchor" id=".environment.opIndexAssign"></span><div class="quickindex" id="quickindex.environment.opIndexAssign"></div>static @trusted inout(char)[] <span class="def-anchor" id="opIndexAssign"></span><code class="ddoc_psymbol">opIndexAssign</code>(inout char[] <code class="ddoc_param">value</code>, scope const(char)[] <code class="ddoc_param">name</code>);
  300 <br></div></dt>
  301 <dd><div class="summary">Assigns the given <span class="d_inlinecode donthyphenate notranslate"><code class="ddoc_param">value</code></span> to the environment variable with the given
  302     <span class="d_inlinecode donthyphenate notranslate"><code class="ddoc_param">name</code></span>.
  303     If <span class="d_inlinecode donthyphenate notranslate"><code class="ddoc_param">value</code></span> is null the variable is removed from environment.
  304 </div><div class="description">    If the variable does not exist, it will be created. If it already exists,
  305     it will be overwritten.
  306 <pre class="d_code notranslate">environment[<span class="d_string">"foo"</span>] = <span class="d_string">"bar"</span>;
  307 </pre>
  308 
  309 </div>
  310 <div class="keyval Throws"><span class="key keyThrows">Throws:</span> <div class="val valThrows"><a href="object.html#.Exception""><span class="d_inlinecode donthyphenate notranslate">Exception</span></a> if the environment variable could not be added
  311         (e.g. if the name is invalid).
  312 
  313 </div></div>
  314 <div class="val"><p class="keyval Section"><span class="key keySection">Note</span>
  315 On some platforms, modifying environment variables may not be allowed in
  316     multi-threaded programs. See e.g.
  317     <a href="https://www.gnu.org/software/libc/manual/html_node/Environment-Access.html#Environment-Access">glibc</a>.</p></div>
  318 
  319 </dd>
  320 <dt class="d_decl"><div ><span class="def-anchor" id=".environment.remove"></span><div class="quickindex" id="quickindex.environment.remove"></div>static nothrow @nogc @trusted void <span class="def-anchor" id="remove"></span><code class="ddoc_psymbol">remove</code>(scope const(char)[] <code class="ddoc_param">name</code>);
  321 <br></div></dt>
  322 <dd><div class="summary">Removes the environment variable with the given <span class="d_inlinecode donthyphenate notranslate"><code class="ddoc_param">name</code></span>.
  323 </div><div class="description">If the variable isn't in the environment, this function returns
  324     successfully without doing anything.
  325 
  326 </div>
  327 <div class="val"><p class="keyval Section"><span class="key keySection">Note</span>
  328 On some platforms, modifying environment variables may not be allowed in
  329     multi-threaded programs. See e.g.
  330     <a href="https://www.gnu.org/software/libc/manual/html_node/Environment-Access.html#Environment-Access">glibc</a>.</p></div>
  331 
  332 </dd>
  333 <dt class="d_decl"><div ><span class="def-anchor" id=".environment.opBinaryRight"></span><div class="quickindex" id="quickindex.environment.opBinaryRight"></div>@trusted bool <span class="def-anchor" id="opBinaryRight"></span><code class="ddoc_psymbol">opBinaryRight</code><span class="template_param_list" title="Template parameter list">(string op : "in")</span>(scope const(char)[] <code class="ddoc_param">name</code>);
  334 <br></div></dt>
  335 <dd><div class="summary">Identify whether a variable is defined in the environment.
  336 </div><div class="description">Because it doesn't return the value, this function is cheaper than <span class="d_inlinecode donthyphenate notranslate">get</span>.
  337     However, if you do need the value as well, you should just check the
  338     return of <span class="d_inlinecode donthyphenate notranslate">get</span> for <span class="d_inlinecode donthyphenate notranslate">null</span> instead of using this function first.
  339 
  340 </div>
  341 <div class="val"><p class="keyval Section"><span class="key keySection">Example</span>
  342 <pre class="d_code notranslate"><span class="d_comment">// good usage
  343 </span><span class="d_keyword">if</span> (<span class="d_string">"MY_ENV_FLAG"</span> <span class="d_keyword">in</span> environment)
  344     doSomething();
  345 
  346 <span class="d_comment">// bad usage
  347 </span><span class="d_keyword">if</span> (<span class="d_string">"MY_ENV_VAR"</span> <span class="d_keyword">in</span> environment)
  348     doSomething(environment[<span class="d_string">"MY_ENV_VAR"</span>]);
  349 
  350 <span class="d_comment">// do this instead
  351 </span><span class="d_keyword">if</span> (<span class="d_keyword">auto</span> var = environment.get(<span class="d_string">"MY_ENV_VAR"</span>))
  352     doSomething(var);
  353 </pre>
  354 </p></div>
  355 
  356 </dd>
  357 <dt class="d_decl"><div ><span class="def-anchor" id=".environment.toAA"></span><div class="quickindex" id="quickindex.environment.toAA"></div>static @trusted string[string] <span class="def-anchor" id="toAA"></span><code class="ddoc_psymbol">toAA</code>();
  358 <br></div></dt>
  359 <dd><div class="summary">Copies all environment variables into an associative array.
  360 </div><div class="val"><p class="keyval Section"><span class="key keySection">Windows specific</span>
  361 While Windows environment variable names are case insensitive, D's
  362     built-in associative arrays are not.  This function will store all
  363     variable names in uppercase (e.g. <span class="d_inlinecode donthyphenate notranslate">PATH</span>).
  364 
  365 </p></div>
  366 <div class="keyval Throws"><span class="key keyThrows">Throws:</span> <div class="val valThrows"><a href="object.html#.Exception""><span class="d_inlinecode donthyphenate notranslate">Exception</span></a> if the environment variables could not
  367         be retrieved (Windows only).</div></div>
  368 
  369 </dd>
  370 </dl>
  371 </dd>
  372 <dt class="d_decl"><div ><span class="def-anchor" id=".thisProcessID"></span><div class="quickindex" id="quickindex.thisProcessID"></div>nothrow @property @trusted int <span class="def-anchor" id="thisProcessID"></span><code class="ddoc_psymbol">thisProcessID</code>();
  373 <br></div></dt>
  374 <dd><div class="summary">Returns the process ID of the current process,
  375  which is guaranteed to be unique on the system.
  376 </div><div class="val"><p class="keyval Section"><span class="key keySection">Example</span>
  377 <pre class="d_code notranslate">writefln(<span class="d_string">"Current process ID: %d"</span>, <span class="d_psymbol">thisProcessID</span>);
  378 </pre>
  379 </p></div>
  380 
  381 </dd>
  382 <dt class="d_decl"><div ><span class="def-anchor" id=".thisThreadID"></span><div class="quickindex" id="quickindex.thisThreadID"></div>nothrow @property @trusted ThreadID <span class="def-anchor" id="thisThreadID"></span><code class="ddoc_psymbol">thisThreadID</code>();
  383 <br></div></dt>
  384 <dd><div class="summary">Returns the process ID of the current thread,
  385  which is guaranteed to be unique within the current process.
  386 </div><div class="keyval Returns"><span class="key keyReturns">Returns:</span> <div class="val valReturns">A <a href="core_thread.html#.ThreadID"><span class="d_inlinecode donthyphenate notranslate">core.thread.ThreadID</span></a> value for the calling thread.
  387 
  388 </div></div>
  389 <div class="val"><p class="keyval Section"><span class="key keySection">Example</span>
  390 <pre class="d_code notranslate">writefln(<span class="d_string">"Current thread ID: %s"</span>, <span class="d_psymbol">thisThreadID</span>);
  391 </pre>
  392 </p></div>
  393 
  394 </dd>
  395 <dt class="d_decl"><div ><span class="def-anchor" id=".spawnProcess"></span><div class="quickindex" id="quickindex.spawnProcess"></div>@trusted Pid <span class="def-anchor" id="spawnProcess"></span><code class="ddoc_psymbol">spawnProcess</code>(scope const(char[])[] <code class="ddoc_param">args</code>, File <code class="ddoc_param">stdin</code> = std.stdio.<code class="ddoc_param">stdin</code>, File <code class="ddoc_param">stdout</code> = std.stdio.<code class="ddoc_param">stdout</code>, File <code class="ddoc_param">stderr</code> = std.stdio.<code class="ddoc_param">stderr</code>, const string[string] <code class="ddoc_param">env</code> = null, Config <code class="ddoc_param">config</code> = Config.none, scope const char[] <code class="ddoc_param">workDir</code> = null);
  396 <br><br>@trusted Pid <span class="def-anchor" id="spawnProcess"></span><code class="ddoc_psymbol">spawnProcess</code>(scope const(char[])[] <code class="ddoc_param">args</code>, const string[string] <code class="ddoc_param">env</code>, Config <code class="ddoc_param">config</code> = Config.none, scope const(char)[] <code class="ddoc_param">workDir</code> = null);
  397 <br><br>@trusted Pid <span class="def-anchor" id="spawnProcess"></span><code class="ddoc_psymbol">spawnProcess</code>(scope const(char)[] <code class="ddoc_param">program</code>, File <code class="ddoc_param">stdin</code> = std.stdio.<code class="ddoc_param">stdin</code>, File <code class="ddoc_param">stdout</code> = std.stdio.<code class="ddoc_param">stdout</code>, File <code class="ddoc_param">stderr</code> = std.stdio.<code class="ddoc_param">stderr</code>, const string[string] <code class="ddoc_param">env</code> = null, Config <code class="ddoc_param">config</code> = Config.none, scope const(char)[] <code class="ddoc_param">workDir</code> = null);
  398 <br><br>@trusted Pid <span class="def-anchor" id="spawnProcess"></span><code class="ddoc_psymbol">spawnProcess</code>(scope const(char)[] <code class="ddoc_param">program</code>, const string[string] <code class="ddoc_param">env</code>, Config <code class="ddoc_param">config</code> = Config.none, scope const(char)[] <code class="ddoc_param">workDir</code> = null);
  399 <br></div></dt>
  400 <dd><div class="summary">Spawns a new process, optionally assigning it an arbitrary set of standard
  401 input, output, and error streams.
  402 </div><div class="description">The function returns immediately, leaving the child process to execute
  403 in parallel with its parent.  It is recommended to always call <a href="#wait"><span class="d_inlinecode donthyphenate notranslate">wait</span></a>
  404 on the returned <a href="#Pid"><span class="d_inlinecode donthyphenate notranslate">Pid</span></a> unless the process was spawned with
  405 <span class="d_inlinecode donthyphenate notranslate">Config.detached</span> flag, as detailed in the documentation for <span class="d_inlinecode donthyphenate notranslate">wait</span>.
  406 
  407 </div>
  408 <div class="val"><p class="keyval Section"><span class="key keySection">Command line</span>
  409 There are four overloads of this function.  The first two take an array
  410 of strings, <span class="d_inlinecode donthyphenate notranslate"><code class="ddoc_param">args</code></span>, which should contain the program name as the
  411 zeroth element and any command-line arguments in subsequent elements.
  412 The third and fourth versions are included for convenience, and may be
  413 used when there are no command-line arguments.  They take a single string,
  414 <span class="d_inlinecode donthyphenate notranslate"><code class="ddoc_param">program</code></span>, which specifies the program name.
  415 <div class="blankline"></div>
  416 
  417 Unless a directory is specified in <span class="d_inlinecode donthyphenate notranslate"><code class="ddoc_param">args</code>[0]</span> or <span class="d_inlinecode donthyphenate notranslate"><code class="ddoc_param">program</code></span>,
  418 <span class="d_inlinecode donthyphenate notranslate"><span class="def-anchor" id="spawnProcess"></span><code class="ddoc_psymbol">spawnProcess</code></span> will search for the program in a platform-dependent
  419 manner.  On POSIX systems, it will look for the executable in the
  420 directories listed in the PATH environment variable, in the order
  421 they are listed.  On Windows, it will search for the executable in
  422 the following sequence:
  423 <ol>    <li>The directory from which the application loaded.</li>
  424     <li>The current directory for the parent process.</li>
  425     <li>The 32-bit Windows system directory.</li>
  426     <li>The 16-bit Windows system directory.</li>
  427     <li>The Windows directory.</li>
  428     <li>The directories listed in the PATH environment variable.</li>
  429 </ol>
  430 <pre class="d_code notranslate"><span class="d_comment">// Run an executable called "prog" located in the current working
  431 </span><span class="d_comment">// directory:
  432 </span><span class="d_keyword">auto</span> pid = <span class="d_psymbol">spawnProcess</span>(<span class="d_string">"./prog"</span>);
  433 <span class="d_keyword">scope</span>(exit) wait(pid);
  434 <span class="d_comment">// We can do something else while the program runs.  The scope guard
  435 </span><span class="d_comment">// ensures that the process is waited for at the end of the scope.
  436 </span>...
  437 
  438 <span class="d_comment">// Run DMD on the file "myprog.d", specifying a few compiler switches:
  439 </span><span class="d_keyword">auto</span> dmdPid = <span class="d_psymbol">spawnProcess</span>([<span class="d_string">"dmd"</span>, <span class="d_string">"-O"</span>, <span class="d_string">"-release"</span>, <span class="d_string">"-inline"</span>, <span class="d_string">"myprog.d"</span> ]);
  440 <span class="d_keyword">if</span> (wait(dmdPid) != 0)
  441     writeln(<span class="d_string">"Compilation failed!"</span>);
  442 </pre>
  443 
  444 </p></div>
  445 <div class="val"><p class="keyval Section"><span class="key keySection">Environment variables</span>
  446 By default, the child process inherits the environment of the parent
  447 process, along with any additional variables specified in the <span class="d_inlinecode donthyphenate notranslate"><code class="ddoc_param">env</code></span>
  448 parameter.  If the same variable exists in both the parent's environment
  449 and in <span class="d_inlinecode donthyphenate notranslate"><code class="ddoc_param">env</code></span>, the latter takes precedence.
  450 <div class="blankline"></div>
  451 
  452 If the <a href="#Config.newEnv"><span class="d_inlinecode donthyphenate notranslate">Config.newEnv</span></a> flag is set in <span class="d_inlinecode donthyphenate notranslate"><code class="ddoc_param">config</code></span>, the child
  453 process will <i>not</i> inherit the parent's environment.  Its entire
  454 environment will then be determined by <span class="d_inlinecode donthyphenate notranslate"><code class="ddoc_param">env</code></span>.
  455 <pre class="d_code notranslate">wait(<span class="d_psymbol">spawnProcess</span>(<span class="d_string">"myapp"</span>, [<span class="d_string">"foo"</span> : <span class="d_string">"bar"</span>], Config.newEnv));
  456 </pre>
  457 
  458 </p></div>
  459 <div class="val"><p class="keyval Section"><span class="key keySection">Standard streams</span>
  460 The optional arguments <span class="d_inlinecode donthyphenate notranslate"><code class="ddoc_param">stdin</code></span>, <span class="d_inlinecode donthyphenate notranslate"><code class="ddoc_param">stdout</code></span> and <span class="d_inlinecode donthyphenate notranslate"><code class="ddoc_param">stderr</code></span> may
  461 be used to assign arbitrary <a href="std_stdio.html#.File"><span class="d_inlinecode donthyphenate notranslate">std.stdio.File</span></a> objects as the standard
  462 input, output and error streams, respectively, of the child process.  The
  463 former must be opened for reading, while the latter two must be opened for
  464 writing.  The default is for the child process to inherit the standard
  465 streams of its parent.
  466 <pre class="d_code notranslate"><span class="d_comment">// Run DMD on the file myprog.d, logging any error messages to a
  467 </span><span class="d_comment">// file named errors.log.
  468 </span><span class="d_keyword">auto</span> logFile = File(<span class="d_string">"errors.log"</span>, <span class="d_string">"w"</span>);
  469 <span class="d_keyword">auto</span> pid = <span class="d_psymbol">spawnProcess</span>([<span class="d_string">"dmd"</span>, <span class="d_string">"myprog.d"</span>],
  470                         std.stdio.<span class="d_param">stdin</span>,
  471                         std.stdio.<span class="d_param">stdout</span>,
  472                         logFile);
  473 <span class="d_keyword">if</span> (wait(pid) != 0)
  474     writeln(<span class="d_string">"Compilation failed. See errors.log for details."</span>);
  475 </pre>
  476 <div class="blankline"></div>
  477 
  478 Note that if you pass a <span class="d_inlinecode donthyphenate notranslate">File</span> object that is <i>not</i>
  479 one of the standard input/output/error streams of the parent process,
  480 that stream will by default be <i>closed</i> in the parent process when
  481 this function returns.  See the <a href="#Config"><span class="d_inlinecode donthyphenate notranslate">Config</span></a> documentation below for
  482 information about how to disable this behaviour.
  483 <div class="blankline"></div>
  484 
  485 Beware of buffering issues when passing <span class="d_inlinecode donthyphenate notranslate">File</span> objects to
  486 <span class="d_inlinecode donthyphenate notranslate"><span class="def-anchor" id="spawnProcess"></span><code class="ddoc_psymbol">spawnProcess</code></span>.  The child process will inherit the low-level raw
  487 read/write offset associated with the underlying file descriptor, but
  488 it will not be aware of any buffered data.  In cases where this matters
  489 (e.g. when a file should be aligned before being passed on to the
  490 child process), it may be a good idea to use unbuffered streams, or at
  491 least ensure all relevant buffers are flushed.
  492 
  493 </p></div>
  494 <div class="keyval Parameters"><span class="key keyParameters">Parameters:</span> <div class="val valParameters"><table class="params"><tr class="param"><td class="param_id">const(char[])[] <code class="ddoc_param">args</code></td>
  495 <td class="param_desc">An array which contains the program name as the zeroth element
  496           and any command-line arguments in the following elements.</td></tr>
  497 <tr class="param"><td class="param_id">File <code class="ddoc_param">stdin</code></td>
  498 <td class="param_desc">The standard input stream of the child process.
  499           This can be any <a href="std_stdio.html#.File"><span class="d_inlinecode donthyphenate notranslate">std.stdio.File</span></a> that is opened for reading.
  500           By default the child process inherits the parent's input
  501           stream.</td></tr>
  502 <tr class="param"><td class="param_id">File <code class="ddoc_param">stdout</code></td>
  503 <td class="param_desc">The standard output stream of the child process.
  504           This can be any <a href="std_stdio.html#.File"><span class="d_inlinecode donthyphenate notranslate">std.stdio.File</span></a> that is opened for writing.
  505           By default the child process inherits the parent's output stream.</td></tr>
  506 <tr class="param"><td class="param_id">File <code class="ddoc_param">stderr</code></td>
  507 <td class="param_desc">The standard error stream of the child process.
  508           This can be any <a href="std_stdio.html#.File"><span class="d_inlinecode donthyphenate notranslate">std.stdio.File</span></a> that is opened for writing.
  509           By default the child process inherits the parent's error stream.</td></tr>
  510 <tr class="param"><td class="param_id">string[string] <code class="ddoc_param">env</code></td>
  511 <td class="param_desc">Additional environment variables for the child process.</td></tr>
  512 <tr class="param"><td class="param_id">Config <code class="ddoc_param">config</code></td>
  513 <td class="param_desc">Flags that control process creation. See <a href="#Config"><span class="d_inlinecode donthyphenate notranslate">Config</span></a>
  514           for an overview of available flags.</td></tr>
  515 <tr class="param"><td class="param_id">char[] <code class="ddoc_param">workDir</code></td>
  516 <td class="param_desc">The working directory for the new process.
  517           By default the child process inherits the parent's working
  518           directory.</td></tr>
  519 </table></div></div>
  520 <div class="keyval Returns"><span class="key keyReturns">Returns:</span> <div class="val valReturns">A <a href="#Pid"><span class="d_inlinecode donthyphenate notranslate">Pid</span></a> object that corresponds to the spawned process.
  521 
  522 </div></div>
  523 <div class="keyval Throws"><span class="key keyThrows">Throws:</span> <div class="val valThrows"><a href="#ProcessException"><span class="d_inlinecode donthyphenate notranslate">ProcessException</span></a> on failure to start the process.<br>
  524 <a href="std_stdio.html#.StdioException"><span class="d_inlinecode donthyphenate notranslate">std.stdio.StdioException</span></a> on failure to pass one of the streams
  525     to the child process (Windows only).<br>
  526 <a href="core_exception.html#.RangeError"><span class="d_inlinecode donthyphenate notranslate">core.exception.RangeError</span></a> if <span class="d_inlinecode donthyphenate notranslate"><code class="ddoc_param">args</code></span> is empty.</div></div>
  527 
  528 </dd>
  529 <dt class="d_decl"><div ><span class="def-anchor" id=".spawnShell"></span><div class="quickindex" id="quickindex.spawnShell"></div>@trusted Pid <span class="def-anchor" id="spawnShell"></span><code class="ddoc_psymbol">spawnShell</code>(scope const(char)[] <code class="ddoc_param">command</code>, File <code class="ddoc_param">stdin</code> = std.stdio.<code class="ddoc_param">stdin</code>, File <code class="ddoc_param">stdout</code> = std.stdio.<code class="ddoc_param">stdout</code>, File <code class="ddoc_param">stderr</code> = std.stdio.<code class="ddoc_param">stderr</code>, scope const string[string] <code class="ddoc_param">env</code> = null, Config <code class="ddoc_param">config</code> = Config.none, scope const(char)[] <code class="ddoc_param">workDir</code> = null, scope string <code class="ddoc_param">shellPath</code> = nativeShell);
  530 <br><br>@trusted Pid <span class="def-anchor" id="spawnShell"></span><code class="ddoc_psymbol">spawnShell</code>(scope const(char)[] <code class="ddoc_param">command</code>, scope const string[string] <code class="ddoc_param">env</code>, Config <code class="ddoc_param">config</code> = Config.none, scope const(char)[] <code class="ddoc_param">workDir</code> = null, scope string <code class="ddoc_param">shellPath</code> = nativeShell);
  531 <br></div></dt>
  532 <dd><div class="summary">A variation on <a href="#spawnProcess"><span class="d_inlinecode donthyphenate notranslate">spawnProcess</span></a> that runs the given command through
  533 the current user's preferred command interpreter (aka. shell).
  534 </div><div class="description">The string <span class="d_inlinecode donthyphenate notranslate"><code class="ddoc_param">command</code></span> is passed verbatim to the shell, and is therefore
  535 subject to its rules about command structure, argument/filename quoting
  536 and escaping of special characters.
  537 The path to the shell executable defaults to <a href="#nativeShell"><span class="d_inlinecode donthyphenate notranslate">nativeShell</span></a>.
  538 <div class="blankline"></div>
  539 
  540 In all other respects this function works just like <span class="d_inlinecode donthyphenate notranslate">spawnProcess</span>.
  541 Please refer to the <a href="#spawnProcess"><span class="d_inlinecode donthyphenate notranslate">spawnProcess</span></a> documentation for descriptions
  542 of the other function parameters, the return value and any exceptions
  543 that may be thrown.
  544 <pre class="d_code notranslate"><span class="d_comment">// Run the command/program "foo" on the file named "my file.txt", and
  545 </span><span class="d_comment">// redirect its output into foo.log.
  546 </span><span class="d_keyword">auto</span> pid = <span class="d_psymbol">spawnShell</span>(<span class="d_string">`foo "my file.txt" &gt; foo.log`</span>);
  547 wait(pid);
  548 </pre>
  549 
  550 </div>
  551 <div class="keyval SeeAlso"><span class="key keySeeAlso">See Also:</span> <div class="val valSeeAlso"><a href="#escapeShellCommand"><span class="d_inlinecode donthyphenate notranslate">escapeShellCommand</span></a>, which may be helpful in constructing a
  552 properly quoted and escaped shell command line for the current platform.</div></div>
  553 
  554 </dd>
  555 <dt class="d_decl"><div ><span class="def-anchor" id=".Config"></span><div class="quickindex" id="quickindex.Config"></div>enum <span class="def-anchor" id="Config"></span><code class="ddoc_psymbol">Config</code>: int;
  556 <br></div></dt>
  557 <dd><div class="summary">Flags that control the behaviour of process creation functions in this
  558 module. Most flags only apply to <a href="#spawnProcess"><span class="d_inlinecode donthyphenate notranslate">spawnProcess</span></a> and
  559 <a href="#spawnShell"><span class="d_inlinecode donthyphenate notranslate">spawnShell</span></a>.
  560 </div><div class="description">Use bitwise OR to combine flags.
  561 
  562 </div>
  563 <div class="val"><p class="keyval Section"><span class="key keySection">Example</span>
  564 <pre class="d_code notranslate"><span class="d_keyword">auto</span> logFile = File(<span class="d_string">"myapp_error.log"</span>, <span class="d_string">"w"</span>);
  565 
  566 <span class="d_comment">// Start program, suppressing the console window (Windows only),
  567 </span><span class="d_comment">// redirect its error stream to logFile, and leave logFile open
  568 </span><span class="d_comment">// in the parent process as well.
  569 </span><span class="d_keyword">auto</span> pid = spawnProcess(<span class="d_string">"myapp"</span>, stdin, stdout, logFile,
  570                         <span class="d_psymbol">Config</span>.retainStderr | <span class="d_psymbol">Config</span>.suppressConsole);
  571 <span class="d_keyword">scope</span>(exit)
  572 {
  573     <span class="d_keyword">auto</span> exitCode = wait(pid);
  574     logFile.writeln(<span class="d_string">"myapp exited with code "</span>, exitCode);
  575     logFile.close();
  576 }
  577 </pre>
  578 </p></div>
  579 
  580 <dl><dt class="d_decl"><div ><span class="def-anchor" id=".Config.newEnv"></span><div class="quickindex" id="quickindex.Config.newEnv"></div><span class="def-anchor" id="newEnv"></span><code class="ddoc_psymbol">newEnv</code><br></div></dt>
  581 <dd><div class="summary">By default, the child process inherits the parent's environment,
  582     and any environment variables passed to <a href="#spawnProcess"><span class="d_inlinecode donthyphenate notranslate">spawnProcess</span></a> will
  583     be added to it.  If this flag is set, the only variables in the
  584     child process' environment will be those given to spawnProcess.</div>
  585 </dd>
  586 <dt class="d_decl"><div ><span class="def-anchor" id=".Config.retainStdin"></span><div class="quickindex" id="quickindex.Config.retainStdin"></div><span class="def-anchor" id="retainStdin"></span><code class="ddoc_psymbol">retainStdin</code><br><br><span class="def-anchor" id=".Config.retainStdout"></span><div class="quickindex" id="quickindex.Config.retainStdout"></div><span class="def-anchor" id="retainStdout"></span><code class="ddoc_psymbol">retainStdout</code><br><br><span class="def-anchor" id=".Config.retainStderr"></span><div class="quickindex" id="quickindex.Config.retainStderr"></div><span class="def-anchor" id="retainStderr"></span><code class="ddoc_psymbol">retainStderr</code><br></div></dt>
  587 <dd><div class="summary">Unless the child process inherits the standard input/output/error
  588     streams of its parent, one almost always wants the streams closed
  589     in the parent when <a href="#spawnProcess"><span class="d_inlinecode donthyphenate notranslate">spawnProcess</span></a> returns.  Therefore, by
  590     default, this is done.  If this is not desirable, pass any of these
  591     options to spawnProcess.</div>
  592 </dd>
  593 <dt class="d_decl"><div ><span class="def-anchor" id=".Config.suppressConsole"></span><div class="quickindex" id="quickindex.Config.suppressConsole"></div><span class="def-anchor" id="suppressConsole"></span><code class="ddoc_psymbol">suppressConsole</code><br></div></dt>
  594 <dd><div class="summary">On Windows, if the child process is a console application, this
  595     flag will prevent the creation of a console window.  Otherwise,
  596     it will be ignored. On POSIX, <span class="d_inlinecode donthyphenate notranslate"><span class="def-anchor" id="suppressConsole"></span><code class="ddoc_psymbol">suppressConsole</code></span> has no effect.</div>
  597 </dd>
  598 <dt class="d_decl"><div ><span class="def-anchor" id=".Config.inheritFDs"></span><div class="quickindex" id="quickindex.Config.inheritFDs"></div><span class="def-anchor" id="inheritFDs"></span><code class="ddoc_psymbol">inheritFDs</code><br></div></dt>
  599 <dd><div class="summary">On POSIX, open <a href="http://en.wikipedia.org/wiki/File_descriptor">file descriptors</a>
  600     are by default inherited by the child process.  As this may lead
  601     to subtle bugs when pipes or multiple threads are involved,
  602     <a href="#spawnProcess"><span class="d_inlinecode donthyphenate notranslate">spawnProcess</span></a> ensures that all file descriptors except the
  603     ones that correspond to standard input/output/error are closed
  604     in the child process when it starts.  Use <span class="d_inlinecode donthyphenate notranslate"><span class="def-anchor" id="inheritFDs"></span><code class="ddoc_psymbol">inheritFDs</code></span> to prevent
  605     this.
  606 </div><div class="description">On Windows, this option has no effect, and any handles which have been
  607     explicitly marked as inheritable will always be inherited by the child
  608     process.</div>
  609 
  610 </dd>
  611 <dt class="d_decl"><div ><span class="def-anchor" id=".Config.detached"></span><div class="quickindex" id="quickindex.Config.detached"></div><span class="def-anchor" id="detached"></span><code class="ddoc_psymbol">detached</code><br></div></dt>
  612 <dd><div class="summary">Spawn process in detached state. This removes the need in calling
  613     <a href="#wait"><span class="d_inlinecode donthyphenate notranslate">wait</span></a> to clean up the process resources.
  614 </div><div class="val"><p class="keyval Section"><span class="key keySection">Note</span>
  615 Calling <a href="#wait"><span class="d_inlinecode donthyphenate notranslate">wait</span></a> or <a href="#kill"><span class="d_inlinecode donthyphenate notranslate">kill</span></a> with the resulting <span class="d_inlinecode donthyphenate notranslate">Pid</span> is invalid.</p></div>
  616 
  617 </dd>
  618 <dt class="d_decl"><div ><span class="def-anchor" id=".Config.stderrPassThrough"></span><div class="quickindex" id="quickindex.Config.stderrPassThrough"></div><span class="def-anchor" id="stderrPassThrough"></span><code class="ddoc_psymbol">stderrPassThrough</code><br></div></dt>
  619 <dd><div class="summary">By default, the <a href="#execute"><span class="d_inlinecode donthyphenate notranslate">execute</span></a> and <a href="#executeShell"><span class="d_inlinecode donthyphenate notranslate">executeShell</span></a> functions
  620     will capture child processes' both stdout and stderr. This can be
  621     undesirable if the standard output is to be processed or otherwise
  622     used by the invoking program, as <span class="d_inlinecode donthyphenate notranslate">execute</span>'s result would then
  623     contain a mix of output and warning/error messages.
  624 </div><div class="description">Specify this flag when calling <span class="d_inlinecode donthyphenate notranslate">execute</span> or <span class="d_inlinecode donthyphenate notranslate">executeShell</span> to
  625     cause invoked processes' stderr stream to be sent to <a href="    std_stdio.html#.stderr"><span class="d_inlinecode donthyphenate notranslate">    std.stdio.stderr</span></a>, and only capture and return standard output.
  626 <div class="blankline"></div>
  627 
  628     This flag has no effect on <a href="#spawnProcess"><span class="d_inlinecode donthyphenate notranslate">spawnProcess</span></a> or <a href="#spawnShell"><span class="d_inlinecode donthyphenate notranslate">spawnShell</span></a>.</div>
  629 
  630 </dd>
  631 </dl>
  632 </dd>
  633 <dt class="d_decl"><div ><span class="def-anchor" id=".Pid"></span><div class="quickindex" id="quickindex.Pid"></div>class <span class="def-anchor" id="Pid"></span><code class="ddoc_psymbol">Pid</code>;
  634 <br></div></dt>
  635 <dd><div class="summary">A handle that corresponds to a spawned process.</div>
  636 <dl><dt class="d_decl"><div ><span class="def-anchor" id=".Pid.processID"></span><div class="quickindex" id="quickindex.Pid.processID"></div>const pure nothrow @property @safe int <span class="def-anchor" id="processID"></span><code class="ddoc_psymbol">processID</code>();
  637 <br></div></dt>
  638 <dd><div class="summary">The process ID number.
  639 </div><div class="description">This is a number that uniquely identifies the process on the operating
  640     system, for at least as long as the process is running.  Once <a href="#wait"><span class="d_inlinecode donthyphenate notranslate">wait</span></a>
  641     has been called on the <a href="#Pid"><span class="d_inlinecode donthyphenate notranslate">Pid</span></a>, this method will return an
  642     invalid (negative) process ID.</div>
  643 
  644 </dd>
  645 <dt class="d_decl"><div ><span class="def-anchor" id=".Pid.osHandle"></span><div class="quickindex" id="quickindex.Pid.osHandle"></div>pure nothrow @nogc @property @safe pid_t <span class="def-anchor" id="osHandle"></span><code class="ddoc_psymbol">osHandle</code>();
  646 <br></div></dt>
  647 <dd><div class="summary">An operating system handle to the process.
  648 </div><div class="description">This handle is used to specify the process in OS-specific APIs.
  649     On POSIX, this function returns a <span class="d_inlinecode donthyphenate notranslate">core.sys.posix.sys.types.pid_t</span>
  650     with the same value as <a href="#Pid.processID"><span class="d_inlinecode donthyphenate notranslate">Pid.processID</span></a>, while on Windows it returns
  651     a <span class="d_inlinecode donthyphenate notranslate">core.sys.windows.windows.HANDLE</span>.
  652 <div class="blankline"></div>
  653 
  654     Once <a href="#wait"><span class="d_inlinecode donthyphenate notranslate">wait</span></a> has been called on the <a href="#Pid"><span class="d_inlinecode donthyphenate notranslate">Pid</span></a>, this method
  655     will return an invalid handle.</div>
  656 
  657 </dd>
  658 </dl>
  659 </dd>
  660 <dt class="d_decl"><div ><span class="def-anchor" id=".wait"></span><div class="quickindex" id="quickindex.wait"></div>@safe int <span class="def-anchor" id="wait"></span><code class="ddoc_psymbol">wait</code>(Pid <code class="ddoc_param">pid</code>);
  661 <br></div></dt>
  662 <dd><div class="summary">Waits for the process associated with <span class="d_inlinecode donthyphenate notranslate"><code class="ddoc_param">pid</code></span> to terminate, and returns
  663 its exit status.
  664 </div><div class="description">In general one should always wait for child processes to terminate
  665 before exiting the parent process unless the process was spawned as detached
  666 (that was spawned with <span class="d_inlinecode donthyphenate notranslate">Config.detached</span> flag).
  667 Otherwise, they may become "<a href="http://en.wikipedia.org/wiki/Zombie_process">zombies</a>"
  668 – processes that are defunct, yet still occupy a slot in the OS process table.
  669 You should not and must not wait for detached processes, since you don't own them.
  670 <div class="blankline"></div>
  671 
  672 If the process has already terminated, this function returns directly.
  673 The exit code is cached, so that if wait() is called multiple times on
  674 the same <a href="#Pid"><span class="d_inlinecode donthyphenate notranslate">Pid</span></a> it will always return the same value.
  675 
  676 </div>
  677 <div class="val"><p class="keyval Section"><span class="key keySection">POSIX specific</span>
  678 If the process is terminated by a signal, this function returns a
  679 negative number whose absolute value is the signal number.
  680 Since POSIX restricts normal exit codes to the range 0-255, a
  681 negative return value will always indicate termination by signal.
  682 Signal codes are defined in the <span class="d_inlinecode donthyphenate notranslate">core.sys.posix.signal</span> module
  683 (which corresponds to the <span class="d_inlinecode donthyphenate notranslate">signal.h</span> POSIX header).
  684 
  685 </p></div>
  686 <div class="keyval Throws"><span class="key keyThrows">Throws:</span> <div class="val valThrows"><a href="#ProcessException"><span class="d_inlinecode donthyphenate notranslate">ProcessException</span></a> on failure or on attempt to wait for detached process.
  687 
  688 </div></div>
  689 <div class="val"><p class="keyval Section"><span class="key keySection">Example</span>
  690 See the <a href="#spawnProcess"><span class="d_inlinecode donthyphenate notranslate">spawnProcess</span></a> documentation.
  691 
  692 </p></div>
  693 <div class="keyval SeeAlso"><span class="key keySeeAlso">See Also:</span> <div class="val valSeeAlso"><a href="#tryWait"><span class="d_inlinecode donthyphenate notranslate">tryWait</span></a>, for a non-blocking function.</div></div>
  694 
  695 </dd>
  696 <dt class="d_decl"><div ><span class="def-anchor" id=".tryWait"></span><div class="quickindex" id="quickindex.tryWait"></div>@safe auto <span class="def-anchor" id="tryWait"></span><code class="ddoc_psymbol">tryWait</code>(Pid <code class="ddoc_param">pid</code>);
  697 <br></div></dt>
  698 <dd><div class="summary">A non-blocking version of <a href="#wait"><span class="d_inlinecode donthyphenate notranslate">wait</span></a>.
  699 </div><div class="description">If the process associated with <span class="d_inlinecode donthyphenate notranslate"><code class="ddoc_param">pid</code></span> has already terminated,
  700 <span class="d_inlinecode donthyphenate notranslate"><span class="def-anchor" id="tryWait"></span><code class="ddoc_psymbol">tryWait</code></span> has the exact same effect as <span class="d_inlinecode donthyphenate notranslate">wait</span>.
  701 In this case, it returns a tuple where the <span class="d_inlinecode donthyphenate notranslate">terminated</span> field
  702 is set to <span class="d_inlinecode donthyphenate notranslate">true</span> and the <span class="d_inlinecode donthyphenate notranslate">status</span> field has the same
  703 interpretation as the return value of <span class="d_inlinecode donthyphenate notranslate">wait</span>.
  704 <div class="blankline"></div>
  705 
  706 If the process has <i>not</i> yet terminated, this function differs
  707 from <span class="d_inlinecode donthyphenate notranslate">wait</span> in that does not wait for this to happen, but instead
  708 returns immediately.  The <span class="d_inlinecode donthyphenate notranslate">terminated</span> field of the returned
  709 tuple will then be set to <span class="d_inlinecode donthyphenate notranslate">false</span>, while the <span class="d_inlinecode donthyphenate notranslate">status</span> field
  710 will always be 0 (zero).  <span class="d_inlinecode donthyphenate notranslate">wait</span> or <span class="d_inlinecode donthyphenate notranslate"><span class="def-anchor" id="tryWait"></span><code class="ddoc_psymbol">tryWait</code></span> should then be
  711 called again on the same <span class="d_inlinecode donthyphenate notranslate">Pid</span> at some later time; not only to
  712 get the exit code, but also to avoid the process becoming a "zombie"
  713 when it finally terminates.  (See <a href="#wait"><span class="d_inlinecode donthyphenate notranslate">wait</span></a> for details).
  714 
  715 </div>
  716 <div class="keyval Returns"><span class="key keyReturns">Returns:</span> <div class="val valReturns">An <span class="d_inlinecode donthyphenate notranslate">std.typecons.Tuple!(bool, "terminated", int, "status")</span>.
  717 
  718 </div></div>
  719 <div class="keyval Throws"><span class="key keyThrows">Throws:</span> <div class="val valThrows"><a href="#ProcessException"><span class="d_inlinecode donthyphenate notranslate">ProcessException</span></a> on failure or on attempt to wait for detached process.
  720 
  721 </div></div>
  722 <div class="val"><p class="keyval Section"><span class="key keySection">Example</span>
  723 <pre class="d_code notranslate"><span class="d_keyword">auto</span> <span class="d_param">pid</span> = spawnProcess(<span class="d_string">"dmd myapp.d"</span>);
  724 <span class="d_keyword">scope</span>(exit) wait(<span class="d_param">pid</span>);
  725 ...
  726 <span class="d_keyword">auto</span> dmd = <span class="d_psymbol">tryWait</span>(<span class="d_param">pid</span>);
  727 <span class="d_keyword">if</span> (dmd.terminated)
  728 {
  729     <span class="d_keyword">if</span> (dmd.status == 0) writeln(<span class="d_string">"Compilation succeeded!"</span>);
  730     <span class="d_keyword">else</span> writeln(<span class="d_string">"Compilation failed"</span>);
  731 }
  732 <span class="d_keyword">else</span> writeln(<span class="d_string">"Still compiling..."</span>);
  733 ...
  734 </pre>
  735 Note that in this example, the first <span class="d_inlinecode donthyphenate notranslate">wait</span> call will have no
  736 effect if the process has already terminated by the time <span class="d_inlinecode donthyphenate notranslate"><span class="def-anchor" id="tryWait"></span><code class="ddoc_psymbol">tryWait</code></span>
  737 is called.  In the opposite case, however, the <span class="d_inlinecode donthyphenate notranslate">scope</span> statement
  738 ensures that we always wait for the process if it hasn't terminated
  739 by the time we reach the end of the scope.</p></div>
  740 
  741 </dd>
  742 <dt class="d_decl"><div ><span class="def-anchor" id=".kill"></span><div class="quickindex" id="quickindex.kill"></div>void <span class="def-anchor" id="kill"></span><code class="ddoc_psymbol">kill</code>(Pid <code class="ddoc_param">pid</code>);
  743 <br><br>void <span class="def-anchor" id="kill"></span><code class="ddoc_psymbol">kill</code>(Pid <code class="ddoc_param">pid</code>, int <code class="ddoc_param">codeOrSignal</code>);
  744 <br></div></dt>
  745 <dd><div class="summary">Attempts to terminate the process associated with <span class="d_inlinecode donthyphenate notranslate"><code class="ddoc_param">pid</code></span>.
  746 </div><div class="description">The effect of this function, as well as the meaning of <span class="d_inlinecode donthyphenate notranslate"><code class="ddoc_param">codeOrSignal</code></span>,
  747 is highly platform dependent.  Details are given below.  Common to all
  748 platforms is that this function only <i>initiates</i> termination of the process,
  749 and returns immediately.  It does not wait for the process to end,
  750 nor does it guarantee that the process does in fact get terminated.
  751 <div class="blankline"></div>
  752 
  753 Always call <a href="#wait"><span class="d_inlinecode donthyphenate notranslate">wait</span></a> to wait for a process to complete, even if <span class="d_inlinecode donthyphenate notranslate"><span class="def-anchor" id="kill"></span><code class="ddoc_psymbol">kill</code></span>
  754 has been called on it.
  755 
  756 </div>
  757 <div class="val"><p class="keyval Section"><span class="key keySection">Windows specific</span>
  758 The process will be
  759 <a href="http://msdn.microsoft.com/en-us/library/windows/desktop/ms686714%28v=vs.100%29.aspx">forcefully and abruptly terminated</a>.  If <span class="d_inlinecode donthyphenate notranslate"><code class="ddoc_param">codeOrSignal</code></span> is specified, it
  760 must be a nonnegative number which will be used as the exit code of the process.
  761 If not, the process wil exit with code 1.  Do not use <span class="d_inlinecode donthyphenate notranslate">codeOrSignal = 259</span>,
  762 as this is a special value (aka. <a href="http://msdn.microsoft.com/en-us/library/windows/desktop/ms683189.aspx">STILL_ACTIVE</a>)
  763 used by Windows to signal that a process has in fact <i>not</i> terminated yet.
  764 <pre class="d_code notranslate"><span class="d_keyword">auto</span> <span class="d_param">pid</span> = spawnProcess(<span class="d_string">"some_app"</span>);
  765 <span class="d_psymbol">kill</span>(<span class="d_param">pid</span>, 10);
  766 <span class="d_keyword">assert</span>(wait(<span class="d_param">pid</span>) == 10);
  767 </pre>
  768 
  769 </p></div>
  770 <div class="val"><p class="keyval Section"><span class="key keySection">POSIX specific</span>
  771 A <a href="http://en.wikipedia.org/wiki/Unix_signal">signal</a> will be sent to
  772 the process, whose value is given by <span class="d_inlinecode donthyphenate notranslate"><code class="ddoc_param">codeOrSignal</code></span>.  Depending on the
  773 signal sent, this may or may not terminate the process.  Symbolic constants
  774 for various <a href="http://en.wikipedia.org/wiki/Unix_signal#POSIX_signals">POSIX signals</a> are defined in <span class="d_inlinecode donthyphenate notranslate">core.sys.posix.signal</span>, which corresponds to the
  775 <a href="http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/signal.h.html"><span class="d_inlinecode donthyphenate notranslate">signal.h</span> POSIX header</a>.  If <span class="d_inlinecode donthyphenate notranslate"><code class="ddoc_param">codeOrSignal</code></span> is omitted, the
  776 <span class="d_inlinecode donthyphenate notranslate">SIGTERM</span> signal will be sent.  (This matches the behaviour of the
  777 <a href="http://pubs.opengroup.org/onlinepubs/9699919799/utilities/kill.html"><span class="d_inlinecode donthyphenate notranslate">_kill</span></a> shell command.)
  778 <pre class="d_code notranslate"><span class="d_keyword">import</span> core.sys.posix.signal : SIGKILL;
  779 <span class="d_keyword">auto</span> <span class="d_param">pid</span> = spawnProcess(<span class="d_string">"some_app"</span>);
  780 <span class="d_psymbol">kill</span>(<span class="d_param">pid</span>, SIGKILL);
  781 <span class="d_keyword">assert</span>(wait(<span class="d_param">pid</span>) == -SIGKILL); <span class="d_comment">// Negative return value on POSIX!
  782 </span></pre>
  783 
  784 </p></div>
  785 <div class="keyval Throws"><span class="key keyThrows">Throws:</span> <div class="val valThrows"><a href="#ProcessException"><span class="d_inlinecode donthyphenate notranslate">ProcessException</span></a> on error (e.g. if codeOrSignal is invalid).
  786     or on attempt to kill detached process.
  787     Note that failure to terminate the process is considered a "normal"
  788     outcome, not an error.<br></div></div>
  789 
  790 </dd>
  791 <dt class="d_decl"><div ><span class="def-anchor" id=".pipe"></span><div class="quickindex" id="quickindex.pipe"></div>@trusted Pipe <span class="def-anchor" id="pipe"></span><code class="ddoc_psymbol">pipe</code>();
  792 <br></div></dt>
  793 <dd><div class="summary">Creates a unidirectional pipe.
  794 </div><div class="description">Data is written to one end of the pipe and read from the other.
  795 <pre class="d_code notranslate"><span class="d_keyword">auto</span> p = <span class="d_psymbol">pipe</span>();
  796 p.writeEnd.writeln(<span class="d_string">"Hello World"</span>);
  797 p.writeEnd.flush();
  798 <span class="d_keyword">assert</span>(p.readEnd.readln().chomp() == <span class="d_string">"Hello World"</span>);
  799 </pre>
  800 Pipes can, for example, be used for interprocess communication
  801 by spawning a new process and passing one end of the pipe to
  802 the child, while the parent uses the other end.
  803 (See also <a href="#pipeProcess"><span class="d_inlinecode donthyphenate notranslate">pipeProcess</span></a> and <a href="#pipeShell"><span class="d_inlinecode donthyphenate notranslate">pipeShell</span></a> for an easier
  804 way of doing this.)
  805 <pre class="d_code notranslate"><span class="d_comment">// Use cURL to download the dlang.org front page, pipe its
  806 </span><span class="d_comment">// output to grep to extract a list of links to ZIP files,
  807 </span><span class="d_comment">// and write the list to the file "D downloads.txt":
  808 </span><span class="d_keyword">auto</span> p = <span class="d_psymbol">pipe</span>();
  809 <span class="d_keyword">auto</span> outFile = File(<span class="d_string">"D downloads.txt"</span>, <span class="d_string">"w"</span>);
  810 <span class="d_keyword">auto</span> cpid = spawnProcess([<span class="d_string">"curl"</span>, <span class="d_string">"http://dlang.org/download.html"</span>],
  811                          std.stdio.stdin, p.writeEnd);
  812 <span class="d_keyword">scope</span>(exit) wait(cpid);
  813 <span class="d_keyword">auto</span> gpid = spawnProcess([<span class="d_string">"grep"</span>, <span class="d_string">"-o"</span>, <span class="d_string">`http://\S*\.zip`</span>],
  814                          p.readEnd, outFile);
  815 <span class="d_keyword">scope</span>(exit) wait(gpid);
  816 </pre>
  817 
  818 </div>
  819 <div class="keyval Returns"><span class="key keyReturns">Returns:</span> <div class="val valReturns">A <a href="#Pipe"><span class="d_inlinecode donthyphenate notranslate">Pipe</span></a> object that corresponds to the created pipe.
  820 
  821 </div></div>
  822 <div class="keyval Throws"><span class="key keyThrows">Throws:</span> <div class="val valThrows"><a href="std_stdio.html#.StdioException"><span class="d_inlinecode donthyphenate notranslate">std.stdio.StdioException</span></a> on failure.</div></div>
  823 
  824 </dd>
  825 <dt class="d_decl"><div ><span class="def-anchor" id=".Pipe"></span><div class="quickindex" id="quickindex.Pipe"></div>struct <span class="def-anchor" id="Pipe"></span><code class="ddoc_psymbol">Pipe</code>;
  826 <br></div></dt>
  827 <dd><div class="summary">An interface to a pipe created by the <a href="#pipe"><span class="d_inlinecode donthyphenate notranslate">pipe</span></a> function.</div>
  828 <dl><dt class="d_decl"><div ><span class="def-anchor" id=".Pipe.readEnd"></span><div class="quickindex" id="quickindex.Pipe.readEnd"></div>nothrow @property @safe File <span class="def-anchor" id="readEnd"></span><code class="ddoc_psymbol">readEnd</code>();
  829 <br></div></dt>
  830 <dd><div class="summary">The read end of the pipe.</div>
  831 </dd>
  832 <dt class="d_decl"><div ><span class="def-anchor" id=".Pipe.writeEnd"></span><div class="quickindex" id="quickindex.Pipe.writeEnd"></div>nothrow @property @safe File <span class="def-anchor" id="writeEnd"></span><code class="ddoc_psymbol">writeEnd</code>();
  833 <br></div></dt>
  834 <dd><div class="summary">The write end of the pipe.</div>
  835 </dd>
  836 <dt class="d_decl"><div ><span class="def-anchor" id=".Pipe.close"></span><div class="quickindex" id="quickindex.Pipe.close"></div>@safe void <span class="def-anchor" id="close"></span><code class="ddoc_psymbol">close</code>();
  837 <br></div></dt>
  838 <dd><div class="summary">Closes both ends of the pipe.
  839 </div><div class="description">Normally it is not necessary to do this manually, as <a href="std_stdio.html#.File"><span class="d_inlinecode donthyphenate notranslate">std.stdio.File</span></a>
  840     objects are automatically closed when there are no more references
  841     to them.
  842 <div class="blankline"></div>
  843 
  844     Note that if either end of the pipe has been passed to a child process,
  845     it will only be closed in the parent process.  (What happens in the
  846     child process is platform dependent.)
  847 
  848 </div>
  849 <div class="keyval Throws"><span class="key keyThrows">Throws:</span> <div class="val valThrows"><a href="std_exception.html#.ErrnoException"><span class="d_inlinecode donthyphenate notranslate">std.exception.ErrnoException</span></a> if an error occurs.</div></div>
  850 
  851 </dd>
  852 </dl>
  853 </dd>
  854 <dt class="d_decl"><div ><span class="def-anchor" id=".pipeProcess"></span><div class="quickindex" id="quickindex.pipeProcess"></div>@safe ProcessPipes <span class="def-anchor" id="pipeProcess"></span><code class="ddoc_psymbol">pipeProcess</code>(scope const(char[])[] <code class="ddoc_param">args</code>, Redirect <code class="ddoc_param">redirect</code> = Redirect.all, const string[string] <code class="ddoc_param">env</code> = null, Config <code class="ddoc_param">config</code> = Config.none, scope const(char)[] <code class="ddoc_param">workDir</code> = null);
  855 <br><br>@safe ProcessPipes <span class="def-anchor" id="pipeProcess"></span><code class="ddoc_psymbol">pipeProcess</code>(scope const(char)[] <code class="ddoc_param">program</code>, Redirect <code class="ddoc_param">redirect</code> = Redirect.all, const string[string] <code class="ddoc_param">env</code> = null, Config <code class="ddoc_param">config</code> = Config.none, scope const(char)[] <code class="ddoc_param">workDir</code> = null);
  856 <br><br><span class="def-anchor" id=".pipeShell"></span><div class="quickindex" id="quickindex.pipeShell"></div>@safe ProcessPipes <span class="def-anchor" id="pipeShell"></span><code class="ddoc_psymbol">pipeShell</code>(scope const(char)[] <code class="ddoc_param">command</code>, Redirect <code class="ddoc_param">redirect</code> = Redirect.all, const string[string] <code class="ddoc_param">env</code> = null, Config <code class="ddoc_param">config</code> = Config.none, scope const(char)[] <code class="ddoc_param">workDir</code> = null, string <code class="ddoc_param">shellPath</code> = nativeShell);
  857 <br></div></dt>
  858 <dd><div class="summary">Starts a new process, creating pipes to redirect its standard
  859 input, output and/or error streams.
  860 </div><div class="description"><span class="d_inlinecode donthyphenate notranslate"><span class="def-anchor" id="pipeProcess"></span><code class="ddoc_psymbol">pipeProcess</code></span> and <span class="d_inlinecode donthyphenate notranslate"><span class="def-anchor" id="pipeShell"></span><code class="ddoc_psymbol">pipeShell</code></span> are convenient wrappers around
  861 <a href="#spawnProcess"><span class="d_inlinecode donthyphenate notranslate">spawnProcess</span></a> and <a href="#spawnShell"><span class="d_inlinecode donthyphenate notranslate">spawnShell</span></a>, respectively, and
  862 automate the task of redirecting one or more of the child process'
  863 standard streams through pipes.  Like the functions they wrap,
  864 these functions return immediately, leaving the child process to
  865 execute in parallel with the invoking process.  It is recommended
  866 to always call <a href="#wait"><span class="d_inlinecode donthyphenate notranslate">wait</span></a> on the returned <a href="#ProcessPipes.pid"><span class="d_inlinecode donthyphenate notranslate">ProcessPipes.pid</span></a>,
  867 as detailed in the documentation for <span class="d_inlinecode donthyphenate notranslate">wait</span>.
  868 <div class="blankline"></div>
  869 
  870 The <span class="d_inlinecode donthyphenate notranslate"><code class="ddoc_param">args</code></span>/<span class="d_inlinecode donthyphenate notranslate"><code class="ddoc_param">program</code></span>/<span class="d_inlinecode donthyphenate notranslate"><code class="ddoc_param">command</code></span>, <span class="d_inlinecode donthyphenate notranslate"><code class="ddoc_param">env</code></span> and <span class="d_inlinecode donthyphenate notranslate"><code class="ddoc_param">config</code></span>
  871 parameters are forwarded straight to the underlying spawn functions,
  872 and we refer to their documentation for details.
  873 
  874 </div>
  875 <div class="keyval Parameters"><span class="key keyParameters">Parameters:</span> <div class="val valParameters"><table class="params"><tr class="param"><td class="param_id">const(char[])[] <code class="ddoc_param">args</code></td>
  876 <td class="param_desc">An array which contains the program name as the zeroth element
  877             and any command-line arguments in the following elements.
  878             (See <a href="#spawnProcess"><span class="d_inlinecode donthyphenate notranslate">spawnProcess</span></a> for details.)</td></tr>
  879 <tr class="param"><td class="param_id">const(char)[] <code class="ddoc_param">program</code></td>
  880 <td class="param_desc">The program name, <i>without</i> command-line arguments.
  881             (See <a href="#spawnProcess"><span class="d_inlinecode donthyphenate notranslate">spawnProcess</span></a> for details.)</td></tr>
  882 <tr class="param"><td class="param_id">const(char)[] <code class="ddoc_param">command</code></td>
  883 <td class="param_desc">A shell command which is passed verbatim to the command
  884             interpreter.  (See <a href="#spawnShell"><span class="d_inlinecode donthyphenate notranslate">spawnShell</span></a> for details.)</td></tr>
  885 <tr class="param"><td class="param_id">Redirect <code class="ddoc_param">redirect</code></td>
  886 <td class="param_desc">Flags that determine which streams are redirected, and
  887             how.  See <a href="#Redirect"><span class="d_inlinecode donthyphenate notranslate">Redirect</span></a> for an overview of available
  888             flags.</td></tr>
  889 <tr class="param"><td class="param_id">string[string] <code class="ddoc_param">env</code></td>
  890 <td class="param_desc">Additional environment variables for the child process.
  891             (See <a href="#spawnProcess"><span class="d_inlinecode donthyphenate notranslate">spawnProcess</span></a> for details.)</td></tr>
  892 <tr class="param"><td class="param_id">Config <code class="ddoc_param">config</code></td>
  893 <td class="param_desc">Flags that control process creation. See <a href="#Config"><span class="d_inlinecode donthyphenate notranslate">Config</span></a>
  894             for an overview of available flags, and note that the
  895             <span class="d_inlinecode donthyphenate notranslate">retainStd...</span> flags have no effect in this function.</td></tr>
  896 <tr class="param"><td class="param_id">const(char)[] <code class="ddoc_param">workDir</code></td>
  897 <td class="param_desc">The working directory for the new process.
  898             By default the child process inherits the parent's working
  899             directory.</td></tr>
  900 <tr class="param"><td class="param_id">string <code class="ddoc_param">shellPath</code></td>
  901 <td class="param_desc">The path to the shell to use to run the specified program.
  902             By default this is <a href="#nativeShell"><span class="d_inlinecode donthyphenate notranslate">nativeShell</span></a>.</td></tr>
  903 </table></div></div>
  904 <div class="keyval Returns"><span class="key keyReturns">Returns:</span> <div class="val valReturns">A <a href="#ProcessPipes"><span class="d_inlinecode donthyphenate notranslate">ProcessPipes</span></a> object which contains <a href="std_stdio.html#.File"><span class="d_inlinecode donthyphenate notranslate">std.stdio.File</span></a>
  905 handles that communicate with the redirected streams of the child
  906 process, along with a <a href="#Pid"><span class="d_inlinecode donthyphenate notranslate">Pid</span></a> object that corresponds to the
  907 spawned process.
  908 
  909 </div></div>
  910 <div class="keyval Throws"><span class="key keyThrows">Throws:</span> <div class="val valThrows"><a href="#ProcessException"><span class="d_inlinecode donthyphenate notranslate">ProcessException</span></a> on failure to start the process.<br>
  911 <a href="std_stdio.html#.StdioException"><span class="d_inlinecode donthyphenate notranslate">std.stdio.StdioException</span></a> on failure to redirect any of the streams.<br>
  912 
  913 </div></div>
  914 <div class="val"><p class="keyval Section"><span class="key keySection">Example</span>
  915 <pre class="d_code notranslate"><span class="d_comment">// my_application writes to stdout and might write to stderr
  916 </span><span class="d_keyword">auto</span> pipes = <span class="d_psymbol">pipeProcess</span>(<span class="d_string">"my_application"</span>, Redirect.stdout | Redirect.stderr);
  917 <span class="d_keyword">scope</span>(exit) wait(pipes.pid);
  918 
  919 <span class="d_comment">// Store lines of output.
  920 </span>string[] output;
  921 <span class="d_keyword">foreach</span> (line; pipes.stdout.byLine) output ~= line.idup;
  922 
  923 <span class="d_comment">// Store lines of errors.
  924 </span>string[] errors;
  925 <span class="d_keyword">foreach</span> (line; pipes.stderr.byLine) errors ~= line.idup;
  926 
  927 
  928 <span class="d_comment">// sendmail expects to read from stdin
  929 </span>pipes = <span class="d_psymbol">pipeProcess</span>([<span class="d_string">"/usr/bin/sendmail"</span>, <span class="d_string">"-t"</span>], Redirect.stdin);
  930 pipes.stdin.writeln(<span class="d_string">"To: you"</span>);
  931 pipes.stdin.writeln(<span class="d_string">"From: me"</span>);
  932 pipes.stdin.writeln(<span class="d_string">"Subject: dlang"</span>);
  933 pipes.stdin.writeln(<span class="d_string">""</span>);
  934 pipes.stdin.writeln(message);
  935 
  936 <span class="d_comment">// a single period tells sendmail we are finished
  937 </span>pipes.stdin.writeln(<span class="d_string">"."</span>);
  938 
  939 <span class="d_comment">// but at this point sendmail might not see it, we need to flush
  940 </span>pipes.stdin.flush();
  941 
  942 <span class="d_comment">// sendmail happens to exit on ".", but some you have to close the file:
  943 </span>pipes.stdin.close();
  944 
  945 <span class="d_comment">// otherwise this wait will wait forever
  946 </span>wait(pipes.pid);
  947 
  948 </pre>
  949 </p></div>
  950 
  951 </dd>
  952 <dt class="d_decl"><div ><span class="def-anchor" id=".Redirect"></span><div class="quickindex" id="quickindex.Redirect"></div>enum <span class="def-anchor" id="Redirect"></span><code class="ddoc_psymbol">Redirect</code>: int;
  953 <br></div></dt>
  954 <dd><div class="summary">Flags that can be passed to <a href="#pipeProcess"><span class="d_inlinecode donthyphenate notranslate">pipeProcess</span></a> and <a href="#pipeShell"><span class="d_inlinecode donthyphenate notranslate">pipeShell</span></a>
  955 to specify which of the child process' standard streams are redirected.
  956 Use bitwise OR to combine flags.</div>
  957 <dl><dt class="d_decl"><div ><span class="def-anchor" id=".Redirect.stdin"></span><div class="quickindex" id="quickindex.Redirect.stdin"></div><span class="def-anchor" id="stdin"></span><code class="ddoc_psymbol">stdin</code><br><br><span class="def-anchor" id=".Redirect.stdout"></span><div class="quickindex" id="quickindex.Redirect.stdout"></div><span class="def-anchor" id="stdout"></span><code class="ddoc_psymbol">stdout</code><br><br><span class="def-anchor" id=".Redirect.stderr"></span><div class="quickindex" id="quickindex.Redirect.stderr"></div><span class="def-anchor" id="stderr"></span><code class="ddoc_psymbol">stderr</code><br></div></dt>
  958 <dd><div class="summary">Redirect the standard input, output or error streams, respectively.</div>
  959 </dd>
  960 <dt class="d_decl"><div ><span class="def-anchor" id=".Redirect.all"></span><div class="quickindex" id="quickindex.Redirect.all"></div><span class="def-anchor" id="all"></span><code class="ddoc_psymbol">all</code><br></div></dt>
  961 <dd><div class="summary">Redirect all three streams.  This is equivalent to
  962     <span class="d_inlinecode donthyphenate notranslate">Redirect.stdin | Redirect.stdout | Redirect.stderr</span>.</div>
  963 </dd>
  964 <dt class="d_decl"><div ><span class="def-anchor" id=".Redirect.stderrToStdout"></span><div class="quickindex" id="quickindex.Redirect.stderrToStdout"></div><span class="def-anchor" id="stderrToStdout"></span><code class="ddoc_psymbol">stderrToStdout</code><br></div></dt>
  965 <dd><div class="summary">Redirect the standard error stream into the standard output stream.
  966     This can not be combined with <span class="d_inlinecode donthyphenate notranslate">Redirect.stderr</span>.</div>
  967 </dd>
  968 <dt class="d_decl"><div ><span class="def-anchor" id=".Redirect.stdoutToStderr"></span><div class="quickindex" id="quickindex.Redirect.stdoutToStderr"></div><span class="def-anchor" id="stdoutToStderr"></span><code class="ddoc_psymbol">stdoutToStderr</code><br></div></dt>
  969 <dd><div class="summary">Redirect the standard output stream into the standard error stream.
  970     This can not be combined with <span class="d_inlinecode donthyphenate notranslate">Redirect.stdout</span>.</div>
  971 </dd>
  972 </dl>
  973 </dd>
  974 <dt class="d_decl"><div ><span class="def-anchor" id=".ProcessPipes"></span><div class="quickindex" id="quickindex.ProcessPipes"></div>struct <span class="def-anchor" id="ProcessPipes"></span><code class="ddoc_psymbol">ProcessPipes</code>;
  975 <br></div></dt>
  976 <dd><div class="summary">Object which contains <a href="std_stdio.html#.File"><span class="d_inlinecode donthyphenate notranslate">std.stdio.File</span></a> handles that allow communication
  977 with a child process through its standard streams.</div>
  978 <dl><dt class="d_decl"><div ><span class="def-anchor" id=".ProcessPipes.pid"></span><div class="quickindex" id="quickindex.ProcessPipes.pid"></div>nothrow @property @safe Pid <span class="def-anchor" id="pid"></span><code class="ddoc_psymbol">pid</code>();
  979 <br></div></dt>
  980 <dd><div class="summary">The <a href="#Pid"><span class="d_inlinecode donthyphenate notranslate">Pid</span></a> of the child process.</div>
  981 </dd>
  982 <dt class="d_decl"><div ><span class="def-anchor" id=".ProcessPipes.stdin"></span><div class="quickindex" id="quickindex.ProcessPipes.stdin"></div>nothrow @property @safe File <span class="def-anchor" id="stdin"></span><code class="ddoc_psymbol">stdin</code>();
  983 <br></div></dt>
  984 <dd><div class="summary">An <a href="std_stdio.html#.File"><span class="d_inlinecode donthyphenate notranslate">std.stdio.File</span></a> that allows writing to the child process'
  985     standard input stream.
  986 </div><div class="keyval Throws"><span class="key keyThrows">Throws:</span> <div class="val valThrows"><a href="object.html#.Error""><span class="d_inlinecode donthyphenate notranslate">Error</span></a> if the child process' standard input stream hasn't
  987     been redirected.</div></div>
  988 
  989 </dd>
  990 <dt class="d_decl"><div ><span class="def-anchor" id=".ProcessPipes.stdout"></span><div class="quickindex" id="quickindex.ProcessPipes.stdout"></div>nothrow @property @safe File <span class="def-anchor" id="stdout"></span><code class="ddoc_psymbol">stdout</code>();
  991 <br></div></dt>
  992 <dd><div class="summary">An <a href="std_stdio.html#.File"><span class="d_inlinecode donthyphenate notranslate">std.stdio.File</span></a> that allows reading from the child process'
  993     standard output stream.
  994 </div><div class="keyval Throws"><span class="key keyThrows">Throws:</span> <div class="val valThrows"><a href="object.html#.Error""><span class="d_inlinecode donthyphenate notranslate">Error</span></a> if the child process' standard output stream hasn't
  995     been redirected.</div></div>
  996 
  997 </dd>
  998 <dt class="d_decl"><div ><span class="def-anchor" id=".ProcessPipes.stderr"></span><div class="quickindex" id="quickindex.ProcessPipes.stderr"></div>nothrow @property @safe File <span class="def-anchor" id="stderr"></span><code class="ddoc_psymbol">stderr</code>();
  999 <br></div></dt>
 1000 <dd><div class="summary">An <a href="std_stdio.html#.File"><span class="d_inlinecode donthyphenate notranslate">std.stdio.File</span></a> that allows reading from the child process'
 1001     standard error stream.
 1002 </div><div class="keyval Throws"><span class="key keyThrows">Throws:</span> <div class="val valThrows"><a href="object.html#.Error""><span class="d_inlinecode donthyphenate notranslate">Error</span></a> if the child process' standard error stream hasn't
 1003     been redirected.</div></div>
 1004 
 1005 </dd>
 1006 </dl>
 1007 </dd>
 1008 <dt class="d_decl"><div ><span class="def-anchor" id=".execute"></span><div class="quickindex" id="quickindex.execute"></div>@trusted auto <span class="def-anchor" id="execute"></span><code class="ddoc_psymbol">execute</code>(scope const(char[])[] <code class="ddoc_param">args</code>, const string[string] <code class="ddoc_param">env</code> = null, Config <code class="ddoc_param">config</code> = Config.none, size_t <code class="ddoc_param">maxOutput</code> = size_t.max, scope const(char)[] <code class="ddoc_param">workDir</code> = null);
 1009 <br><br>@trusted auto <span class="def-anchor" id="execute"></span><code class="ddoc_psymbol">execute</code>(scope const(char)[] <code class="ddoc_param">program</code>, const string[string] <code class="ddoc_param">env</code> = null, Config <code class="ddoc_param">config</code> = Config.none, size_t <code class="ddoc_param">maxOutput</code> = size_t.max, scope const(char)[] <code class="ddoc_param">workDir</code> = null);
 1010 <br><br><span class="def-anchor" id=".executeShell"></span><div class="quickindex" id="quickindex.executeShell"></div>@trusted auto <span class="def-anchor" id="executeShell"></span><code class="ddoc_psymbol">executeShell</code>(scope const(char)[] <code class="ddoc_param">command</code>, const string[string] <code class="ddoc_param">env</code> = null, Config <code class="ddoc_param">config</code> = Config.none, size_t <code class="ddoc_param">maxOutput</code> = size_t.max, scope const(char)[] <code class="ddoc_param">workDir</code> = null, string <code class="ddoc_param">shellPath</code> = nativeShell);
 1011 <br></div></dt>
 1012 <dd><div class="summary">Executes the given program or shell command and returns its exit
 1013 code and output.
 1014 </div><div class="description"><span class="d_inlinecode donthyphenate notranslate"><span class="def-anchor" id="execute"></span><code class="ddoc_psymbol">execute</code></span> and <span class="d_inlinecode donthyphenate notranslate"><span class="def-anchor" id="executeShell"></span><code class="ddoc_psymbol">executeShell</code></span> start a new process using
 1015 <a href="#spawnProcess"><span class="d_inlinecode donthyphenate notranslate">spawnProcess</span></a> and <a href="#spawnShell"><span class="d_inlinecode donthyphenate notranslate">spawnShell</span></a>, respectively, and wait
 1016 for the process to complete before returning.  The functions capture
 1017 what the child process prints to both its standard output and
 1018 standard error streams, and return this together with its exit code.
 1019 <pre class="d_code notranslate"><span class="d_keyword">auto</span> dmd = <span class="d_psymbol">execute</span>([<span class="d_string">"dmd"</span>, <span class="d_string">"myapp.d"</span>]);
 1020 <span class="d_keyword">if</span> (dmd.status != 0) writeln(<span class="d_string">"Compilation failed:\n"</span>, dmd.output);
 1021 
 1022 <span class="d_keyword">auto</span> ls = <span class="d_psymbol">executeShell</span>(<span class="d_string">"ls -l"</span>);
 1023 <span class="d_keyword">if</span> (ls.status != 0) writeln(<span class="d_string">"Failed to retrieve file listing"</span>);
 1024 <span class="d_keyword">else</span> writeln(ls.output);
 1025 </pre>
 1026 <div class="blankline"></div>
 1027 
 1028 The <span class="d_inlinecode donthyphenate notranslate"><code class="ddoc_param">args</code></span>/<span class="d_inlinecode donthyphenate notranslate"><code class="ddoc_param">program</code></span>/<span class="d_inlinecode donthyphenate notranslate"><code class="ddoc_param">command</code></span>, <span class="d_inlinecode donthyphenate notranslate"><code class="ddoc_param">env</code></span> and <span class="d_inlinecode donthyphenate notranslate"><code class="ddoc_param">config</code></span>
 1029 parameters are forwarded straight to the underlying spawn functions,
 1030 and we refer to their documentation for details.
 1031 
 1032 </div>
 1033 <div class="keyval Parameters"><span class="key keyParameters">Parameters:</span> <div class="val valParameters"><table class="params"><tr class="param"><td class="param_id">const(char[])[] <code class="ddoc_param">args</code></td>
 1034 <td class="param_desc">An array which contains the program name as the zeroth element
 1035             and any command-line arguments in the following elements.
 1036             (See <a href="#spawnProcess"><span class="d_inlinecode donthyphenate notranslate">spawnProcess</span></a> for details.)</td></tr>
 1037 <tr class="param"><td class="param_id">const(char)[] <code class="ddoc_param">program</code></td>
 1038 <td class="param_desc">The program name, <i>without</i> command-line arguments.
 1039             (See <a href="#spawnProcess"><span class="d_inlinecode donthyphenate notranslate">spawnProcess</span></a> for details.)</td></tr>
 1040 <tr class="param"><td class="param_id">const(char)[] <code class="ddoc_param">command</code></td>
 1041 <td class="param_desc">A shell command which is passed verbatim to the command
 1042             interpreter.  (See <a href="#spawnShell"><span class="d_inlinecode donthyphenate notranslate">spawnShell</span></a> for details.)</td></tr>
 1043 <tr class="param"><td class="param_id">string[string] <code class="ddoc_param">env</code></td>
 1044 <td class="param_desc">Additional environment variables for the child process.
 1045             (See <a href="#spawnProcess"><span class="d_inlinecode donthyphenate notranslate">spawnProcess</span></a> for details.)</td></tr>
 1046 <tr class="param"><td class="param_id">Config <code class="ddoc_param">config</code></td>
 1047 <td class="param_desc">Flags that control process creation. See <a href="#Config"><span class="d_inlinecode donthyphenate notranslate">Config</span></a>
 1048             for an overview of available flags, and note that the
 1049             <span class="d_inlinecode donthyphenate notranslate">retainStd...</span> flags have no effect in this function.</td></tr>
 1050 <tr class="param"><td class="param_id">size_t <code class="ddoc_param">maxOutput</code></td>
 1051 <td class="param_desc">The maximum number of bytes of output that should be
 1052             captured.</td></tr>
 1053 <tr class="param"><td class="param_id">const(char)[] <code class="ddoc_param">workDir</code></td>
 1054 <td class="param_desc">The working directory for the new process.
 1055             By default the child process inherits the parent's working
 1056             directory.</td></tr>
 1057 <tr class="param"><td class="param_id">string <code class="ddoc_param">shellPath</code></td>
 1058 <td class="param_desc">The path to the shell to use to run the specified program.
 1059             By default this is <a href="#nativeShell"><span class="d_inlinecode donthyphenate notranslate">nativeShell</span></a>.</td></tr>
 1060 </table></div></div>
 1061 <div class="keyval Returns"><span class="key keyReturns">Returns:</span> <div class="val valReturns">An <span class="d_inlinecode donthyphenate notranslate">std.typecons.Tuple!(int, "status", string, "output")</span>.
 1062 
 1063 </div></div>
 1064 <div class="val"><p class="keyval Section"><span class="key keySection">POSIX specific</span>
 1065 If the process is terminated by a signal, the <span class="d_inlinecode donthyphenate notranslate">status</span> field of
 1066 the return value will contain a negative number whose absolute
 1067 value is the signal number.  (See <a href="#wait"><span class="d_inlinecode donthyphenate notranslate">wait</span></a> for details.)
 1068 
 1069 </p></div>
 1070 <div class="keyval Throws"><span class="key keyThrows">Throws:</span> <div class="val valThrows"><a href="#ProcessException"><span class="d_inlinecode donthyphenate notranslate">ProcessException</span></a> on failure to start the process.<br>
 1071 <a href="std_stdio.html#.StdioException"><span class="d_inlinecode donthyphenate notranslate">std.stdio.StdioException</span></a> on failure to capture output.</div></div>
 1072 
 1073 </dd>
 1074 <dt class="d_decl"><div ><span class="def-anchor" id=".ProcessException"></span><div class="quickindex" id="quickindex.ProcessException"></div>class <span class="def-anchor" id="ProcessException"></span><code class="ddoc_psymbol">ProcessException</code>: <span class="ddoc_psuper_symbol">object.Exception</span>;
 1075 <br></div></dt>
 1076 <dd><div class="summary">An exception that signals a problem with starting or waiting for a process.</div>
 1077 </dd>
 1078 <dt class="d_decl"><div ><span class="def-anchor" id=".userShell"></span><div class="quickindex" id="quickindex.userShell"></div>@property @safe string <span class="def-anchor" id="userShell"></span><code class="ddoc_psymbol">userShell</code>();
 1079 <br></div></dt>
 1080 <dd><div class="summary">Determines the path to the current user's preferred command interpreter.
 1081 </div><div class="description">On Windows, this function returns the contents of the COMSPEC environment
 1082 variable, if it exists.  Otherwise, it returns the result of <a href="#nativeShell"><span class="d_inlinecode donthyphenate notranslate">nativeShell</span></a>.
 1083 <div class="blankline"></div>
 1084 
 1085 On POSIX, <span class="d_inlinecode donthyphenate notranslate"><span class="def-anchor" id="userShell"></span><code class="ddoc_psymbol">userShell</code></span> returns the contents of the SHELL environment
 1086 variable, if it exists and is non-empty.  Otherwise, it returns the result of
 1087 <a href="#nativeShell"><span class="d_inlinecode donthyphenate notranslate">nativeShell</span></a>.</div>
 1088 
 1089 </dd>
 1090 <dt class="d_decl"><div ><span class="def-anchor" id=".nativeShell"></span><div class="quickindex" id="quickindex.nativeShell"></div>pure nothrow @nogc @property @safe string <span class="def-anchor" id="nativeShell"></span><code class="ddoc_psymbol">nativeShell</code>();
 1091 <br></div></dt>
 1092 <dd><div class="summary">The platform-specific native shell path.
 1093 </div><div class="description">This function returns <span class="d_inlinecode donthyphenate notranslate">"cmd.exe"</span> on Windows, <span class="d_inlinecode donthyphenate notranslate">"/bin/sh"</span> on POSIX, and
 1094 <span class="d_inlinecode donthyphenate notranslate">"/system/bin/sh"</span> on Android.</div>
 1095 
 1096 </dd>
 1097 <dt class="d_decl"><div ><span class="def-anchor" id=".escapeShellCommand"></span><div class="quickindex" id="quickindex.escapeShellCommand"></div>pure @safe string <span class="def-anchor" id="escapeShellCommand"></span><code class="ddoc_psymbol">escapeShellCommand</code>(scope const(char[])[] <code class="ddoc_param">args</code>...);
 1098 <br></div></dt>
 1099 <dd><div class="summary">Escapes an argv-style argument array to be used with <a href="#spawnShell"><span class="d_inlinecode donthyphenate notranslate">spawnShell</span></a>,
 1100 <a href="#pipeShell"><span class="d_inlinecode donthyphenate notranslate">pipeShell</span></a> or <a href="#executeShell"><span class="d_inlinecode donthyphenate notranslate">executeShell</span></a>.
 1101 <pre class="d_code notranslate">string url = <span class="d_string">"http://dlang.org/"</span>;
 1102 executeShell(<span class="d_psymbol">escapeShellCommand</span>(<span class="d_string">"wget"</span>, url, <span class="d_string">"-O"</span>, <span class="d_string">"dlang-index.html"</span>));
 1103 </pre>
 1104 </div><div class="description">Concatenate multiple <span class="d_inlinecode donthyphenate notranslate"><span class="def-anchor" id="escapeShellCommand"></span><code class="ddoc_psymbol">escapeShellCommand</code></span> and
 1105 <a href="#escapeShellFileName"><span class="d_inlinecode donthyphenate notranslate">escapeShellFileName</span></a> results to use shell redirection or
 1106 piping operators.
 1107 <pre class="d_code notranslate">executeShell(
 1108     <span class="d_psymbol">escapeShellCommand</span>(<span class="d_string">"curl"</span>, <span class="d_string">"http://dlang.org/download.html"</span>) ~
 1109     <span class="d_string">"|"</span> ~
 1110     <span class="d_psymbol">escapeShellCommand</span>(<span class="d_string">"grep"</span>, <span class="d_string">"-o"</span>, <span class="d_string">`http://\S*\.zip`</span>) ~
 1111     <span class="d_string">"&gt;"</span> ~
 1112     escapeShellFileName(<span class="d_string">"D download links.txt"</span>));
 1113 </pre>
 1114 
 1115 </div>
 1116 <div class="keyval Throws"><span class="key keyThrows">Throws:</span> <div class="val valThrows"><a href="object.html#.Exception""><span class="d_inlinecode donthyphenate notranslate">Exception</span></a> if any part of the command line contains unescapable
 1117 characters (NUL on all platforms, as well as CR and LF on Windows).</div></div>
 1118 
 1119 </dd>
 1120 <dt class="d_decl"><div ><span class="def-anchor" id=".escapeWindowsArgument"></span><div class="quickindex" id="quickindex.escapeWindowsArgument"></div>pure nothrow @trusted string <span class="def-anchor" id="escapeWindowsArgument"></span><code class="ddoc_psymbol">escapeWindowsArgument</code>(scope const(char)[] <code class="ddoc_param">arg</code>);
 1121 <br></div></dt>
 1122 <dd><div class="summary">Quotes a command-line argument in a manner conforming to the behavior of
 1123 <a href="http://msdn.microsoft.com/en-us/library/windows/desktop/bb776391(v=vs.85).aspx">CommandLineToArgvW</a>.</div>
 1124 </dd>
 1125 <dt class="d_decl"><div ><span class="def-anchor" id=".escapeShellFileName"></span><div class="quickindex" id="quickindex.escapeShellFileName"></div>pure nothrow @trusted string <span class="def-anchor" id="escapeShellFileName"></span><code class="ddoc_psymbol">escapeShellFileName</code>(scope const(char)[] <code class="ddoc_param">fileName</code>);
 1126 <br></div></dt>
 1127 <dd><div class="summary">Escapes a filename to be used for shell redirection with <a href="#spawnShell"><span class="d_inlinecode donthyphenate notranslate">spawnShell</span></a>,
 1128 <a href="#pipeShell"><span class="d_inlinecode donthyphenate notranslate">pipeShell</span></a> or <a href="#executeShell"><span class="d_inlinecode donthyphenate notranslate">executeShell</span></a>.</div>
 1129 </dd>
 1130 <dt class="d_decl"><div ><span class="def-anchor" id=".execv"></span><div class="quickindex" id="quickindex.execv"></div>int <span class="def-anchor" id="execv"></span><code class="ddoc_psymbol">execv</code>(in string <code class="ddoc_param">pathname</code>, in string[] <code class="ddoc_param">argv</code>);
 1131 <br><br><span class="def-anchor" id=".execve"></span><div class="quickindex" id="quickindex.execve"></div>int <span class="def-anchor" id="execve"></span><code class="ddoc_psymbol">execve</code>(in string <code class="ddoc_param">pathname</code>, in string[] <code class="ddoc_param">argv</code>, in string[] <code class="ddoc_param">envp</code>);
 1132 <br><br><span class="def-anchor" id=".execvp"></span><div class="quickindex" id="quickindex.execvp"></div>int <span class="def-anchor" id="execvp"></span><code class="ddoc_psymbol">execvp</code>(in string <code class="ddoc_param">pathname</code>, in string[] <code class="ddoc_param">argv</code>);
 1133 <br><br><span class="def-anchor" id=".execvpe"></span><div class="quickindex" id="quickindex.execvpe"></div>int <span class="def-anchor" id="execvpe"></span><code class="ddoc_psymbol">execvpe</code>(in string <code class="ddoc_param">pathname</code>, in string[] <code class="ddoc_param">argv</code>, in string[] <code class="ddoc_param">envp</code>);
 1134 <br></div></dt>
 1135 <dd><div class="summary">Replaces the current process by executing a command, <span class="d_inlinecode donthyphenate notranslate"><code class="ddoc_param">pathname</code></span>, with
 1136     the arguments in <span class="d_inlinecode donthyphenate notranslate"><code class="ddoc_param">argv</code></span>.
 1137 </div><div class="description"><span class="blue">This function is Posix-Only.</span>
 1138 <div class="blankline"></div>
 1139 
 1140     Typically, the first element of <span class="d_inlinecode donthyphenate notranslate"><code class="ddoc_param">argv</code></span> is
 1141     the command being executed, i.e. <span class="d_inlinecode donthyphenate notranslate">argv[0] == pathname</span>. The 'p'
 1142     versions of <span class="d_inlinecode donthyphenate notranslate">exec</span> search the PATH environment variable for <span class="d_inlinecode donthyphenate notranslate">    pathname</span>. The 'e' versions additionally take the new process'
 1143     environment variables as an array of strings of the form key=value.
 1144 <div class="blankline"></div>
 1145 
 1146     Does not return on success (the current process will have been
 1147     replaced). Returns -1 on failure with no indication of the
 1148     underlying error.
 1149 
 1150 </div>
 1151 <div class="val"><p class="keyval Section"><span class="key keySection">Windows specific</span>
 1152     These functions are only supported on POSIX platforms, as the Windows
 1153     operating systems do not provide the ability to overwrite the current
 1154     process image with another. In single-threaded programs it is possible
 1155     to approximate the effect of <span class="d_inlinecode donthyphenate notranslate"><span class="def-anchor" id="execv"></span><code class="ddoc_psymbol">execv</code>*</span> by using <a href="#spawnProcess"><span class="d_inlinecode donthyphenate notranslate">spawnProcess</span></a>
 1156     and terminating the current process once the child process has returned.
 1157     For example:
 1158 <pre class="d_code notranslate"><span class="d_keyword">auto</span> commandLine = [ <span class="d_string">"program"</span>, <span class="d_string">"arg1"</span>, <span class="d_string">"arg2"</span> ];
 1159 <span class="d_keyword">version</span> (Posix)
 1160 {
 1161     <span class="d_psymbol">execv</span>(commandLine[0], commandLine);
 1162     <span class="d_keyword">throw</span> <span class="d_keyword">new</span> Exception(<span class="d_string">"Failed to execute program"</span>);
 1163 }
 1164 <span class="d_keyword">else</span> <span class="d_keyword">version</span> (Windows)
 1165 {
 1166     <span class="d_keyword">import</span> core.stdc.stdlib : _Exit;
 1167     _Exit(wait(spawnProcess(commandLine)));
 1168 }
 1169 </pre>
 1170     This is, however, NOT equivalent to POSIX' <span class="d_inlinecode donthyphenate notranslate"><span class="def-anchor" id="execv"></span><code class="ddoc_psymbol">execv</code>*</span>.  For one thing, the
 1171     executed program is started as a separate process, with all this entails.
 1172     Secondly, in a multithreaded program, other threads will continue to do
 1173     work while the current thread is waiting for the child process to complete.
 1174 <div class="blankline"></div>
 1175 
 1176     A better option may sometimes be to terminate the current program immediately
 1177     after spawning the child process.  This is the behaviour exhibited by the
 1178     <a href="http://msdn.microsoft.com/en-us/library/431x4c1w.aspx"><span class="d_inlinecode donthyphenate notranslate">__exec</span></a>
 1179     functions in Microsoft's C runtime library, and it is how D's now-deprecated
 1180     Windows <span class="d_inlinecode donthyphenate notranslate"><span class="def-anchor" id="execv"></span><code class="ddoc_psymbol">execv</code>*</span> functions work. Example:
 1181 <pre class="d_code notranslate"><span class="d_keyword">auto</span> commandLine = [ <span class="d_string">"program"</span>, <span class="d_string">"arg1"</span>, <span class="d_string">"arg2"</span> ];
 1182 <span class="d_keyword">version</span> (Posix)
 1183 {
 1184     <span class="d_psymbol">execv</span>(commandLine[0], commandLine);
 1185     <span class="d_keyword">throw</span> <span class="d_keyword">new</span> Exception(<span class="d_string">"Failed to execute program"</span>);
 1186 }
 1187 <span class="d_keyword">else</span> <span class="d_keyword">version</span> (Windows)
 1188 {
 1189     spawnProcess(commandLine);
 1190     <span class="d_keyword">import</span> core.stdc.stdlib : _exit;
 1191     _exit(0);
 1192 }
 1193 </pre>
 1194 </p></div>
 1195 
 1196 </dd>
 1197 <dt class="d_decl"><div ><span class="def-anchor" id=".browse"></span><div class="quickindex" id="quickindex.browse"></div>void <span class="def-anchor" id="browse"></span><code class="ddoc_psymbol">browse</code>(scope const(char)[] <code class="ddoc_param">url</code>);
 1198 <br></div></dt>
 1199 <dd><div class="summary">Start up the browser and set it to viewing the page at url.</div>
 1200 </dd>
 1201 </dl>
 1202 
 1203         <div class="smallprint" id="copyright">Copyright &copy; 1999-2020 by the <a href="../foundation_overview.html">D Language Foundation</a> | Page generated by
 1204 <a href="../spec/ddoc.html">Ddoc</a> on Fri Nov 20 21:58:11 2020
 1205 </div>
 1206     </div>
 1207 </div>
 1208 
 1209     <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
 1210     <script type="text/javascript">window.jQuery || document.write('\x3Cscript src="../js/jquery-1.7.2.min.js">\x3C/script>');</script>
 1211     <script type="text/javascript" src="../js/dlang.js"></script>
 1212     
 1213     <script type="text/javascript" src="../js/codemirror-compressed.js"></script>
 1214     <script type="text/javascript" src="../js/run.js"></script>
 1215 <script type="text/javascript" src="../js/run_examples.js"></script>
 1216 
 1217 <script type="text/javascript" src="../js/listanchors.js"></script>
 1218 <script type="text/javascript" src="../js/show_contributors.js"></script>
 1219 <script type="text/javascript">jQuery(document).ready(listanchors);</script>
 1220 <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css">
 1221 </body>
 1222 </html>