Try to add following two lines after print "output #2\n";:
print "output #3\n";
and you will get your SIGPIPE
So after you printed "output #1" you hit abort in browser, browser sent "FIN" to server, that means that it will not send any data to server, server considers connection open write only after that. Then you print "output #2", server sends it to browser as it thinks connection is still open for writing, no error here and no SIGPIPE. Client receives this "output #2" and replies with "RST" as it considers connection completely closed. After server got "RST" it realise that connection is closed, now if you try to write anything into socket, you will get SIGPIPE.