📄 fdpass.html
字号:
<font color="#2040a0">exit</font><font color="4444FF">(</font><font color="#FF0000">1</font><font color="4444FF">)</font><font color="4444FF">;</font> <font color="4444FF"><strong>}</strong></font> <font color="#444444">// Convert read side of pipe to string and pass as an argument </font> <font color="#444444">// to the child process.</font> <font color="#2040a0">itoa</font><font color="4444FF">(</font><font color="#2040a0">hpipe</font><font color="4444FF">[</font><font color="#2040a0">READ</font><font color="4444FF">]</font>, <font color="#2040a0">hstr</font>, <font color="#FF0000">10</font><font color="4444FF">)</font><font color="4444FF">;</font> <strong>if</strong> <font color="4444FF">(</font><font color="4444FF">(</font><font color="#2040a0">pid</font> <font color="4444FF">=</font> <font color="#2040a0">spawnl</font><font color="4444FF">(</font><font color="#2040a0">P_NOWAIT</font>, <font color="#2040a0">argv</font><font color="4444FF">[</font><font color="#FF0000">0</font><font color="4444FF">]</font>, <font color="#2040a0">argv</font><font color="4444FF">[</font><font color="#FF0000">0</font><font color="4444FF">]</font>, <font color="#2040a0">hstr</font>, <font color="#2040a0">NULL</font><font color="4444FF">)</font><font color="4444FF">)</font> <font color="4444FF">=</font><font color="4444FF">=</font> <font color="4444FF">-</font><font color="#FF0000">1</font><font color="4444FF">)</font> <font color="4444FF"><strong>{</strong></font> <font color="#2040a0">perror</font><font color="4444FF">(</font><font color="#008000">"Spawn failed"</font><font color="4444FF">)</font><font color="4444FF">;</font> <font color="4444FF"><strong>}</strong></font> <font color="#444444">// Put problem in write pipe; it will appear in child's read pipe.</font> <strong>for</strong> <font color="4444FF">(</font><font color="#2040a0">problem</font> <font color="4444FF">=</font> <font color="#FF0000">1000</font><font color="4444FF">;</font> <font color="#2040a0">problem</font> <font color="4444FF"><</font><font color="4444FF">=</font> <font color="#2040a0">NUMPROBLEM</font> <font color="4444FF">*</font> <font color="#FF0000">1000</font><font color="4444FF">;</font> <font color="#2040a0">problem</font> <font color="4444FF">+</font><font color="4444FF">=</font> <font color="#FF0000">1000</font><font color="4444FF">)</font> <font color="4444FF"><strong>{</strong></font> <strong>if</strong> <font color="4444FF">(</font><font color="#2040a0">write</font><font color="4444FF">(</font><font color="#2040a0">hpipe</font><font color="4444FF">[</font><font color="#2040a0">WRITE</font><font color="4444FF">]</font>, <font color="4444FF">(</font><strong>char</strong> <font color="4444FF">*</font><font color="4444FF">)</font> <font color="4444FF">&</font><font color="#2040a0">problem</font>, <strong>sizeof</strong><font color="4444FF">(</font><strong>int</strong><font color="4444FF">)</font><font color="4444FF">)</font> <font color="4444FF">=</font><font color="4444FF">=</font> <font color="4444FF">-</font><font color="#FF0000">1</font><font color="4444FF">)</font> <font color="4444FF"><strong>{</strong></font> <font color="#2040a0">perror</font><font color="4444FF">(</font><font color="#008000">"parent write failed"</font><font color="4444FF">)</font><font color="4444FF">;</font> <font color="4444FF"><strong>}</strong></font> <strong>else</strong> <font color="4444FF"><strong>{</strong></font> <font color="#2040a0">printf</font><font color="4444FF">(</font><font color="#008000">"Son, what is the square root of %d?<font color="#77dd77">\n</font>"</font>, <font color="#2040a0">problem</font><font color="4444FF">)</font><font color="4444FF">;</font> <font color="4444FF"><strong>}</strong></font> <font color="4444FF"><strong>}</strong></font> <font color="#444444">// Wait until spawned program is done processing.</font> <font color="#2040a0">CWAIT</font><font color="4444FF">(</font><font color="4444FF">&</font><font color="#2040a0">termstat</font>, <font color="#2040a0">pid</font>, <font color="#2040a0">WAIT_CHILD</font><font color="4444FF">)</font><font color="4444FF">;</font> <strong>if</strong> <font color="4444FF">(</font><font color="#2040a0">termstat</font> <font color="4444FF">&</font> <font color="#FF0000">0x0</font><font color="4444FF">)</font> <font color="4444FF"><strong>{</strong></font> <font color="#2040a0">perror</font><font color="4444FF">(</font><font color="#008000">"Child failed"</font><font color="4444FF">)</font><font color="4444FF">;</font> <font color="4444FF"><strong>}</strong></font> <font color="#2040a0">close</font><font color="4444FF">(</font><font color="#2040a0">hpipe</font><font color="4444FF">[</font><font color="#2040a0">READ</font><font color="4444FF">]</font><font color="4444FF">)</font><font color="4444FF">;</font> <font color="#2040a0">close</font><font color="4444FF">(</font><font color="#2040a0">hpipe</font><font color="4444FF">[</font><font color="#2040a0">WRITE</font><font color="4444FF">]</font><font color="4444FF">)</font><font color="4444FF">;</font> <font color="4444FF"><strong>}</strong></font> <strong>else</strong> <font color="4444FF"><strong>{</strong></font> <font color="#444444">//// There is a command line argument, so we must be a child process</font> <font color="#444444">// Convert argument to integer handle value.</font> <font color="#2040a0">hpipe</font><font color="4444FF">[</font><font color="#2040a0">READ</font><font color="4444FF">]</font> <font color="4444FF">=</font> <font color="#2040a0">atoi</font><font color="4444FF">(</font><font color="#2040a0">argv</font><font color="4444FF">[</font><font color="#FF0000">1</font><font color="4444FF">]</font><font color="4444FF">)</font><font color="4444FF">;</font> <font color="#444444">// Read problem from pipe and calculate solution.</font> <strong>for</strong> <font color="4444FF">(</font><font color="#2040a0">c</font> <font color="4444FF">=</font> <font color="#FF0000">0</font><font color="4444FF">;</font> <font color="#2040a0">c</font> <font color="4444FF"><</font> <font color="#2040a0">NUMPROBLEM</font><font color="4444FF">;</font> <font color="#2040a0">c</font><font color="4444FF">+</font><font color="4444FF">+</font><font color="4444FF">)</font> <font color="4444FF"><strong>{</strong></font> <strong>if</strong> <font color="4444FF">(</font><font color="#2040a0">read</font><font color="4444FF">(</font><font color="#2040a0">hpipe</font><font color="4444FF">[</font><font color="#2040a0">READ</font><font color="4444FF">]</font>, <font color="4444FF">(</font><strong>char</strong> <font color="4444FF">*</font><font color="4444FF">)</font> <font color="4444FF">&</font><font color="#2040a0">problem</font>, <strong>sizeof</strong><font color="4444FF">(</font><strong>int</strong><font color="4444FF">)</font><font color="4444FF">)</font> <font color="4444FF">=</font><font color="4444FF">=</font> <font color="4444FF">-</font><font color="#FF0000">1</font><font color="4444FF">)</font> <font color="4444FF"><strong>{</strong></font> <font color="#2040a0">perror</font><font color="4444FF">(</font><font color="#008000">"child read failed"</font><font color="4444FF">)</font><font color="4444FF">;</font> <font color="4444FF"><strong>}</strong></font> <strong>else</strong> <font color="4444FF"><strong>{</strong></font> <font color="#2040a0">printf</font><font color="4444FF">(</font><font color="#008000">"Dad, the square root of %d is %3.2f.<font color="#77dd77">\n</font>"</font>, <font color="#2040a0">problem</font>, <font color="#2040a0">sqrt</font><font color="4444FF">(</font><font color="4444FF">(</font><strong>double</strong><font color="4444FF">)</font> <font color="#2040a0">problem</font><font color="4444FF">)</font><font color="4444FF">)</font><font color="4444FF">;</font> <font color="4444FF"><strong>}</strong></font> <font color="4444FF"><strong>}</strong></font> <font color="4444FF"><strong>}</strong></font> <strong>return</strong> <font color="#FF0000">0</font><font color="4444FF">;</font><font color="4444FF"><strong>}</strong></font></pre> </td> </tr></table><!-- ---- Document Footer ---- --><hr noshade size=1 color=#404040><table cellpadding=5 cellspacing=0 border=0 width=95% align=center> <tr> <td align=left> <a href="../examples/rawping.html"><< Ping: Raw Sockets Method</a> </td> <td align=right> <a href="../examples/ipaddr.html">Get the Local IP Address(es) >></a> </td> </tr> <tr> <td align=left> <i>Last modified on 29 April 2000 at 15:52 UTC-7</i> </td> <td align=right> <font size=-1>Please send corrections to <a href="mailto:tangent@cyberport.com">tangent@cyberport.com</a>.</font> </td> </tr> </table> <table cellpadding=5 cellspacing=0 border=0 width=95% align=center> <tr> <td align=left width=33%> <font size=-1> <a href="../index.html"><b><</b> Go to the main FAQ page</a> </font> </td> <td width=33%> <font size=-1> <center> <a href="http://www.cyberport.com/~tangent/programming"><b><<</b> Go to my Programming pages</a> </center> </font> </td> <td align=right width=33%> <font size=-1> <a href="http://www.cyberport.com/~tangent/"><b><<<</b> Go to my Home Page</a> </font> </td> </tr> </table> </body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -