Thread Prozess Starten und PID speichern: ohne open (8 answers)
Opened by bloonix at 2006-06-03 17:51

bloonix
 2006-06-03 17:51
#66977 #66977
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
Hallo Leute,

ich möchte gerne einen Prozess starten, die PID des Prozesses
speichern und dann nichts weiter tun, als den Prozess arbeiten zu
lassen, ohne STDIN oder STDOUT des Prozesses zu beeinflussen.

Mein erster Lösungsanzatz ist folgender (allerdings mit open()):

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
use strict;
use warnings;

my $pid = open my $CMD, "| sar -c 1 2 \&>/dev/null" or die $!;

while (1) {
open my $STAT,'<',"/proc/$pid/stat" or die $!;
my $state = (split /\s+/, <$STAT>)[2];
close $STAT;

if ($state eq 'Z') {
close $CMD or die $!;
waitpid($pid,0);
last;
}

sleep 1;
}


Dieses Verfahren gefällt mir allerdings garnicht! Ich möchte den
Prozess einfach nur starten und die PID speichern, mehr nicht.

Kennt jemand eine elegantere Lösung, ohne das ich alle /proc/<pid>
Verzeichnisse nach dem Prozess absuchen muss?

Gruß,
opi\n\n

<!--EDIT|opi|1149346357-->
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.

View full thread Prozess Starten und PID speichern: ohne open