#!/usr/bin/perl -w use strict; use IPC::Open2; open2(\*OUT,\*IN,"cat 2>&1") or die "Couldn't run cat: $!\n"; print IN "this is a test\n" x 4096; close(IN) or die "Couln't close cat stdin: $!\n"; while () { print "cat: $_"; } close(OUT) or die "Couldn't close cat stdout: $!\n"; #### #!/usr/bin/perl -w use strict; use IPC::Open2; open2(\*OUT,\*IN,"cat 2>&1") or die "Couldn't run cat: $!\n"; my $child2 = fork(); defined($child2) or die "fork error: $!\n"; if (!$child2) { # Child close(OUT); print IN "this is a test\n" x 4096 or die "print error: $!\n"; close(IN) or die "Couln't close cat stdin: $!\n"; exit(0); } close(IN); # Parent while () { print "cat: $_"; } close(OUT) or die "Couldn't close cat stdout: $!\n"; # Wait for both children wait; wait; exit(0);