15759b3d2Safresh1#!./perl 25759b3d2Safresh1 35759b3d2Safresh1BEGIN { 45759b3d2Safresh1 chdir 't' if -d 't'; 55759b3d2Safresh1 require './test.pl'; 65759b3d2Safresh1 set_up_inc('../lib'); 7*5486feefSafresh1 require Config; Config->import; 85759b3d2Safresh1 skip_all_if_miniperl(); 95759b3d2Safresh1 for my $needed (qw(d_socket)) { 105759b3d2Safresh1 if ($Config{$needed} ne 'define') { 115759b3d2Safresh1 skip_all("-- \$Config{$needed} undefined"); 125759b3d2Safresh1 } 135759b3d2Safresh1 } 145759b3d2Safresh1 unless ($Config{extensions} =~ /\bSocket\b/) { 155759b3d2Safresh1 skip_all('-- Socket not available'); 165759b3d2Safresh1 } 175759b3d2Safresh1} 185759b3d2Safresh1 195759b3d2Safresh1use strict; 205759b3d2Safresh1use IO::Handle; 215759b3d2Safresh1use Socket; 225759b3d2Safresh1 235759b3d2Safresh1{ 245759b3d2Safresh1 socketpair(my $a, my $b, PF_UNIX, SOCK_STREAM, 0) 255759b3d2Safresh1 or skip_all("socketpair() for PF_UNIX failed ($!)"); 265759b3d2Safresh1} 275759b3d2Safresh1 285759b3d2Safresh1plan(tests => 8); 295759b3d2Safresh1 305759b3d2Safresh1{ 315759b3d2Safresh1 my($a, $b); 325759b3d2Safresh1 ok socketpair($a, $b, PF_UNIX, SOCK_STREAM, 0), "create socket pair"; 335759b3d2Safresh1 ok($a->printflush("aa\n"), "write one way"); 345759b3d2Safresh1 ok($b->printflush("bb\n"), "write other way"); 355759b3d2Safresh1 is(readline($b), "aa\n", "read one way"); 365759b3d2Safresh1 is(readline($a), "bb\n", "read other way"); 375759b3d2Safresh1 ok(close $a, "close one end"); 385759b3d2Safresh1 ok(close $b, "close other end"); 395759b3d2Safresh1} 405759b3d2Safresh1 415759b3d2Safresh1SKIP: { 425759b3d2Safresh1 skip "no fcntl", 1 unless $Config{d_fcntl}; 435759b3d2Safresh1 my($a, $b); 445759b3d2Safresh1 socketpair($a, $b, PF_UNIX, SOCK_STREAM, 0) or die "socketpair: $!"; 455759b3d2Safresh1 my $fda = fileno($a); 465759b3d2Safresh1 my $fdb = fileno($b); 475759b3d2Safresh1 fresh_perl_is(qq( 485759b3d2Safresh1 print open(F, "+<&=$fda") ? 1 : 0, "\\n"; 495759b3d2Safresh1 print open(F, "+<&=$fdb") ? 1 : 0, "\\n"; 505759b3d2Safresh1 ), "0\n0\n", {}, "sockets not inherited across exec"); 515759b3d2Safresh1} 52