I need to launch a separate executable and record its process ID (on a linux cluster) so I can kill it later on, if need be. The way I've been doing this is by using open:
my $handle = IO::Handle->new;
my $pid = open($handle, 'command & |') or die $!;
The problem is that sometimes 'command' spits out a lot of stdout messages, causing a broken pipe on $handle. I'm not really interested in those stdout messages anyway ('command' writes an output file that I'll parse instead) so the only reason I'm using 'open()' is that it gives me the $pid, which 'system()' and 'exec()' don't do. Is there a better way to get the $pid? Without the broken pipe?