?? fig18_11.pl
字號:
#!/usr/bin/perl
# Fig. 18.11: fig18_11.pl
# Using pipe to communicate with child processes.
use warnings;
use strict;
use IO::Handle;
pipe( CHILDINPUT, PARENTOUTPUT );
pipe( PARENTINPUT, CHILDOUTPUT );
PARENTOUTPUT->autoflush( 1 );
CHILDOUTPUT->autoflush( 1 );
STDOUT->autoflush( 1 );
if ( my $pid = fork() ) {
for ( 1 .. 10 ) {
print( PARENTOUTPUT "$_\n" );
print( "I said $_, " );
chomp( my $response = <PARENTINPUT> );
print( "and he said $response!\n" );
}
close( PARENTOUTPUT ) or
die( "Cannot close PARENTOUTPUT: $!" );
close( PARENTINPUT ) or
die( "Cannot close PARENTINPUT: $!" );
}
elsif ( defined( $pid ) ) {
close( PARENTOUTPUT ) or
die( "Cannot close PARENTOUTPUT: $!" );
close( PARENTINPUT ) or
die( "Cannot close PARENTINPUT: $!" );
while ( <CHILDINPUT> ) {
chomp();
print( CHILDOUTPUT $_ * 20, "\n" );
}
close( CHILDOUTPUT ) or
die( "Cannot close CHILDOUTPUT: $!" );
close( CHILDINPUT ) or
die( "Cannot close CHILDINPUT: $!" );
exit();
}
else {
die( "Fork did not work" );
}
print( "And that is the end of the conversation.\n" );
###########################################################################
# (C) Copyright 2001 by Deitel & Associates, Inc. and Prentice Hall. #
# All Rights Reserved. #
# #
# DISCLAIMER: The authors and publisher of this book have used their #
# best efforts in preparing the book. These efforts include the #
# development, research, and testing of the theories and programs #
# to determine their effectiveness. The authors and publisher make #
# no warranty of any kind, expressed or implied, with regard to these #
# programs or to the documentation contained in these books. The authors #
# and publisher shall not be liable in any event for incidental or #
# consequential damages in connection with, or arising out of, the #
# furnishing, performance, or use of these programs. #
###########################################################################
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -