⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 processmanagementandcommunication.mht

📁 Perl 编程技巧大全。适合初学者阅读。
💻 MHT
📖 第 1 页 / 共 5 页
字号:
color=3D#98fb98>eof</FONT><FONT color=3D#00ffff>(</FONT>$fh<FONT =
color=3D#00ffff>);</FONT>
    <FONT color=3D#00ffff>}</FONT>
<FONT color=3D#00ffff>}</FONT>

<FONT color=3D#98fb98>close</FONT><FONT =
color=3D#00ffff>(</FONT>CMD_CUT<FONT color=3D#00ffff>);</FONT>
<FONT color=3D#98fb98>close</FONT><FONT =
color=3D#00ffff>(</FONT>CMD_ERR<FONT color=3D#00ffff>);</FONT>

<FONT color=3D#bebebe>#-----------------------------
</FONT></PRE></FONT></TD></TR></TBODY></TABLE></DIV>
<DIV class=3DSECT2>
<H2 class=3DSECT2><A name=3DAEN878>Communicating Between Related =
Processes</A></H2>
<TABLE width=3D"100%" bgColor=3D#2f4f4f border=3D0>
  <TBODY>
  <TR>
    <TD><PRE class=3DSCREEN><FONT color=3D#f5deb3 size=3D+1><FONT =
color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#98fb98>pipe</FONT><FONT =
color=3D#00ffff>(</FONT>READER, WRITER<FONT color=3D#00ffff>);</FONT>
<FONT color=3D#ffa500>if</FONT> <FONT color=3D#00ffff>(</FONT><FONT =
color=3D#98fb98>fork</FONT><FONT color=3D#00ffff>)</FONT> <FONT =
color=3D#00ffff>{</FONT>
    <FONT color=3D#bebebe># run parent code, either reading or writing, =
not both
</FONT><FONT color=3D#00ffff>}</FONT> <FONT color=3D#ffa500>else</FONT> =
<FONT color=3D#00ffff>{</FONT>
    <FONT color=3D#bebebe># run child code, either reading or writing, =
not both
</FONT><FONT color=3D#00ffff>}</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#ffa500>if</FONT> <FONT =
color=3D#00ffff>(</FONT>$pid =3D <FONT color=3D#98fb98>open</FONT><FONT =
color=3D#00ffff>(</FONT>CHILD, <FONT color=3D#00cd00>"|-"</FONT><FONT =
color=3D#00ffff>))</FONT> <FONT color=3D#00ffff>{</FONT>
        <FONT color=3D#bebebe># run parent code, writing to child
</FONT><FONT color=3D#00ffff>}</FONT> <FONT color=3D#ffa500>else</FONT> =
<FONT color=3D#00ffff>{</FONT>
    <FONT color=3D#ffa500>die</FONT> <FONT color=3D#00cd00>"cannot fork: =
$!"</FONT> <FONT color=3D#ffa500>unless</FONT> <FONT =
color=3D#ff7f50>defined</FONT> $pid<FONT color=3D#00ffff>;</FONT>
    <FONT color=3D#bebebe># otherwise run child code here, reading from =
parent
</FONT><FONT color=3D#00ffff>}</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#ffa500>if</FONT> <FONT =
color=3D#00ffff>(</FONT>$pid =3D <FONT color=3D#98fb98>open</FONT><FONT =
color=3D#00ffff>(</FONT>CHILD, <FONT color=3D#00cd00>"-|"</FONT><FONT =
color=3D#00ffff>))</FONT> <FONT color=3D#00ffff>{</FONT>
    <FONT color=3D#bebebe># run parent code, reading from child
</FONT><FONT color=3D#00ffff>}</FONT> <FONT color=3D#ffa500>else</FONT> =
<FONT color=3D#00ffff>{</FONT>
    <FONT color=3D#ffa500>die</FONT> <FONT color=3D#00cd00>"cannot fork: =
$!"</FONT> <FONT color=3D#ffa500>unless</FONT> <FONT =
color=3D#ff7f50>defined</FONT> $pid<FONT color=3D#00ffff>;</FONT>
    <FONT color=3D#bebebe># otherwise run child code here, writing to =
parent
</FONT><FONT color=3D#00ffff>}</FONT>
<FONT color=3D#bebebe>#-----------------------------
# <FONT size=3D-1><A =
href=3D"http://pleac.sourceforge.net/include/perl/ch16/pipe1">download =
the following standalone program</A></FONT>
#!/usr/bin/perl -w
# pipe1 - use pipe and fork so parent can send to child
</FONT>
<FONT color=3D#ffa500>use</FONT> <FONT =
color=3D#b2dfee>IO::Handle</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#98fb98>pipe</FONT><FONT color=3D#00ffff>(</FONT>READER, =
WRITER<FONT color=3D#00ffff>);</FONT>
WRITER-&gt;autoflush<FONT color=3D#00ffff>(</FONT><FONT =
color=3D#cdcd00>1</FONT><FONT color=3D#00ffff>);</FONT>

<FONT color=3D#ffa500>if</FONT> <FONT color=3D#00ffff>(</FONT>$pid =3D =
<FONT color=3D#98fb98>fork</FONT><FONT color=3D#00ffff>)</FONT> <FONT =
color=3D#00ffff>{</FONT>
    <FONT color=3D#98fb98>close</FONT> READER<FONT =
color=3D#00ffff>;</FONT>
    <FONT color=3D#ff7f50>print</FONT> WRITER <FONT =
color=3D#00cd00>"Parent Pid $$ is sending this\n"</FONT><FONT =
color=3D#00ffff>;</FONT>
    <FONT color=3D#98fb98>close</FONT> WRITER<FONT =
color=3D#00ffff>;</FONT>
    <FONT color=3D#98fb98>waitpid</FONT><FONT =
color=3D#00ffff>(</FONT>$pid,<FONT color=3D#cdcd00>0</FONT><FONT =
color=3D#00ffff>);</FONT>
<FONT color=3D#00ffff>}</FONT> <FONT color=3D#ffa500>else</FONT> <FONT =
color=3D#00ffff>{</FONT>
    <FONT color=3D#ffa500>die</FONT> <FONT color=3D#00cd00>"cannot fork: =
$!"</FONT> <FONT color=3D#ffa500>unless</FONT> <FONT =
color=3D#ff7f50>defined</FONT> $pid<FONT color=3D#00ffff>;</FONT>
    <FONT color=3D#98fb98>close</FONT> WRITER<FONT =
color=3D#00ffff>;</FONT>
    <FONT color=3D#ff7f50>chomp</FONT><FONT =
color=3D#00ffff>(</FONT>$line =3D &lt;READER&gt;<FONT =
color=3D#00ffff>);</FONT>
    <FONT color=3D#ff7f50>print</FONT> <FONT color=3D#00cd00>"Child Pid =
$$ just read this: `$line'\n"</FONT><FONT color=3D#00ffff>;</FONT>
    <FONT color=3D#98fb98>close</FONT> READER<FONT =
color=3D#00ffff>;</FONT>  <FONT color=3D#bebebe># this will happen =
anyway
</FONT>    <FONT color=3D#ffa500>exit</FONT><FONT =
color=3D#00ffff>;</FONT>
<FONT color=3D#00ffff>}</FONT>

<FONT color=3D#bebebe>#-----------------------------
# <FONT size=3D-1><A =
href=3D"http://pleac.sourceforge.net/include/perl/ch16/pipe2">download =
the following standalone program</A></FONT>
#!/usr/bin/perl -w
# pipe2 - use pipe and fork so child can send to parent
</FONT>
<FONT color=3D#ffa500>use</FONT> <FONT =
color=3D#b2dfee>IO::Handle</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#98fb98>pipe</FONT><FONT color=3D#00ffff>(</FONT>READER, =
WRITER<FONT color=3D#00ffff>);</FONT>
WRITER-&gt;autoflush<FONT color=3D#00ffff>(</FONT><FONT =
color=3D#cdcd00>1</FONT><FONT color=3D#00ffff>);</FONT>

<FONT color=3D#ffa500>if</FONT> <FONT color=3D#00ffff>(</FONT>$pid =3D =
<FONT color=3D#98fb98>fork</FONT><FONT color=3D#00ffff>)</FONT> <FONT =
color=3D#00ffff>{</FONT>
    <FONT color=3D#98fb98>close</FONT> WRITER<FONT =
color=3D#00ffff>;</FONT>
    <FONT color=3D#ff7f50>chomp</FONT><FONT =
color=3D#00ffff>(</FONT>$line =3D &lt;READER&gt;<FONT =
color=3D#00ffff>);</FONT>
    <FONT color=3D#ff7f50>print</FONT> <FONT color=3D#00cd00>"Parent Pid =
$$ just read this: `$line'\n"</FONT><FONT color=3D#00ffff>;</FONT>
    <FONT color=3D#98fb98>close</FONT> READER<FONT =
color=3D#00ffff>;</FONT>
    <FONT color=3D#98fb98>waitpid</FONT><FONT =
color=3D#00ffff>(</FONT>$pid,<FONT color=3D#cdcd00>0</FONT><FONT =
color=3D#00ffff>);</FONT>
<FONT color=3D#00ffff>}</FONT> <FONT color=3D#ffa500>else</FONT> <FONT =
color=3D#00ffff>{</FONT>
    <FONT color=3D#ffa500>die</FONT> <FONT color=3D#00cd00>"cannot fork: =
$!"</FONT> <FONT color=3D#ffa500>unless</FONT> <FONT =
color=3D#ff7f50>defined</FONT> $pid<FONT color=3D#00ffff>;</FONT>
    <FONT color=3D#98fb98>close</FONT> READER<FONT =
color=3D#00ffff>;</FONT>
    <FONT color=3D#ff7f50>print</FONT> WRITER <FONT =
color=3D#00cd00>"Child Pid $$ is sending this\n"</FONT><FONT =
color=3D#00ffff>;</FONT>
    <FONT color=3D#98fb98>close</FONT> WRITER<FONT =
color=3D#00ffff>;</FONT>  <FONT color=3D#bebebe># this will happen =
anyway
</FONT>    <FONT color=3D#ffa500>exit</FONT><FONT =
color=3D#00ffff>;</FONT>
<FONT color=3D#00ffff>}</FONT>

<FONT color=3D#bebebe>#-----------------------------
# <FONT size=3D-1><A =
href=3D"http://pleac.sourceforge.net/include/perl/ch16/pipe3">download =
the following standalone program</A></FONT>
#!/usr/bin/perl -w
# pipe3 - use forking open so parent can send to child
</FONT>
<FONT color=3D#ffa500>use</FONT> <FONT =
color=3D#b2dfee>IO::Handle</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#ffa500>if</FONT> <FONT color=3D#00ffff>(</FONT>$pid =3D =
<FONT color=3D#98fb98>open</FONT><FONT color=3D#00ffff>(</FONT>CHILD, =
<FONT color=3D#00cd00>"|-"</FONT><FONT color=3D#00ffff>))</FONT> <FONT =
color=3D#00ffff>{</FONT>
    CHILD-&gt;autoflush<FONT color=3D#00ffff>(</FONT><FONT =
color=3D#cdcd00>1</FONT><FONT color=3D#00ffff>);</FONT>
    <FONT color=3D#ff7f50>print</FONT> CHILD <FONT =
color=3D#00cd00>"Parent Pid $$ is sending this\n"</FONT><FONT =
color=3D#00ffff>;</FONT>
    <FONT color=3D#98fb98>close</FONT><FONT =
color=3D#00ffff>(</FONT>CHILD<FONT color=3D#00ffff>);</FONT>
<FONT color=3D#00ffff>}</FONT> <FONT color=3D#ffa500>else</FONT> <FONT =
color=3D#00ffff>{</FONT>
    <FONT color=3D#ffa500>die</FONT> <FONT color=3D#00cd00>"cannot fork: =
$!"</FONT> <FONT color=3D#ffa500>unless</FONT> <FONT =
color=3D#ff7f50>defined</FONT> $pid<FONT color=3D#00ffff>;</FONT>
    <FONT color=3D#ff7f50>chomp</FONT><FONT =
color=3D#00ffff>(</FONT>$line =3D &lt;STDIN&gt;<FONT =
color=3D#00ffff>);</FONT>
    <FONT color=3D#ff7f50>print</FONT> <FONT color=3D#00cd00>"Child Pid =
$$ just read this: `$line'\n"</FONT><FONT color=3D#00ffff>;</FONT>
    <FONT color=3D#ffa500>exit</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#00ffff>}</FONT>

<FONT color=3D#bebebe>#-----------------------------
# <FONT size=3D-1><A =
href=3D"http://pleac.sourceforge.net/include/perl/ch16/pipe4">download =
the following standalone program</A></FONT>
#!/usr/bin/perl -w
# pipe4 - use forking open so child can send to parent
</FONT>
<FONT color=3D#ffa500>use</FONT> <FONT =
color=3D#b2dfee>IO::Handle</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#ffa500>if</FONT> <FONT color=3D#00ffff>(</FONT>$pid =3D =
<FONT color=3D#98fb98>open</FONT><FONT color=3D#00ffff>(</FONT>CHILD, =
<FONT color=3D#00cd00>"-|"</FONT><FONT color=3D#00ffff>))</FONT> <FONT =
color=3D#00ffff>{</FONT>
    <FONT color=3D#ff7f50>chomp</FONT><FONT =
color=3D#00ffff>(</FONT>$line =3D &lt;CHILD&gt;<FONT =
color=3D#00ffff>);</FONT>
    <FONT color=3D#ff7f50>print</FONT> <FONT color=3D#00cd00>"Parent Pid =
$$ just read this: `$line'\n"</FONT><FONT color=3D#00ffff>;</FONT>
    <FONT color=3D#98fb98>close</FONT><FONT =
color=3D#00ffff>(</FONT>CHILD<FONT color=3D#00ffff>);</FONT>
<FONT color=3D#00ffff>}</FONT> <FONT color=3D#ffa500>else</FONT> <FONT =
color=3D#00ffff>{</FONT>
    <FONT color=3D#ffa500>die</FONT> <FONT color=3D#00cd00>"cannot fork: =
$!"</FONT> <FONT color=3D#ffa500>unless</FONT> <FONT =
color=3D#ff7f50>defined</FONT> $pid<FONT color=3D#00ffff>;</FONT>
    STDOUT-&gt;autoflush<FONT color=3D#00ffff>(</FONT><FONT =
color=3D#cdcd00>1</FONT><FONT color=3D#00ffff>);</FONT>
    <FONT color=3D#ff7f50>print</FONT> STDOUT <FONT =
color=3D#00cd00>"Child Pid $$ is sending this\n"</FONT><FONT =
color=3D#00ffff>;</FONT>
    <FONT color=3D#ffa500>exit</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#00ffff>}</FONT>

<FONT color=3D#bebebe>#-----------------------------
# <FONT size=3D-1><A =
href=3D"http://pleac.sourceforge.net/include/perl/ch16/pipe5">download =
the following standalone program</A></FONT>
#!/usr/bin/perl -w
# pipe5 - bidirectional communication using two pipe pairs
#         designed for the socketpair-challenged
</FONT><FONT color=3D#ffa500>use</FONT> <FONT =
color=3D#b2dfee>IO::Handle</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#98fb98>pipe</FONT><FONT =
color=3D#00ffff>(</FONT>PARENT_RDR, CHILD_WTR<FONT =
color=3D#00ffff>);</FONT>
<FONT color=3D#98fb98>pipe</FONT><FONT =
color=3D#00ffff>(</FONT>CHILD_RDR,  PARENT_WTR<FONT =
color=3D#00ffff>);</FONT>
CHILD_WTR-&gt;autoflush<FONT color=3D#00ffff>(</FONT><FONT =
color=3D#cdcd00>1</FONT><FONT color=3D#00ffff>);</FONT>
PARENT_WTR-&gt;autoflush<FONT color=3D#00ffff>(</FONT><FONT =
color=3D#cdcd00>1</FONT><FONT color=3D#00ffff>);</FONT>

<FONT color=3D#ffa500>if</FONT> <FONT color=3D#00ffff>(</FONT>$pid =3D =
<FONT color=3D#98fb98>fork</FONT><FONT color=3D#00ffff>)</FONT> <FONT =
color=3D#00ffff>{</FONT>
    <FONT color=3D#98fb98>close</FONT> PARENT_RDR<FONT =
color=3D#00ffff>;</FONT> <FONT color=3D#98fb98>close</FONT> =
PARENT_WTR<FONT color=3D#00ffff>;</FONT>
    <FONT color=3D#ff7f50>print</FONT> CHILD_WTR <FONT =
color=3D#00cd00>"Parent Pid $$ is sending this\n"</FONT><FONT =
color=3D#00ffff>;</FONT>
    <FONT color=3D#ff7f50>chomp</FONT><FONT =
color=3D#00ffff>(</FONT>$line =3D &lt;CHILD_RDR&gt;<FONT =
color=3D#00ffff>);</FONT>
    <FONT color=3D#ff7f50>print</FONT> <FONT color=3D#00cd00>"Parent Pid =
$$ just read this: `$line'\n"</FONT><FONT color=3D#00ffff>;</FONT>
    <FONT color=3D#98fb98>close</FONT> CHILD_RDR<FONT =
color=3D#00ffff>;</FONT> <FONT color=3D#98fb98>close</FONT> =
CHILD_WTR<FONT color=3D#00ffff>;</FONT>
    <FONT color=3D#98fb98>waitpid</FONT><FONT =
color=3D#00ffff>(</FONT>$pid,<FONT color=3D#cdcd00>0</FONT><FONT =
color=3D#00ffff>);</FONT>
<FONT color=3D#00ffff>}</FONT> <FONT color=3D#ffa500>else</FONT> <FONT =
color=3D#00ffff>{</FONT>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -