Hallo, folgendes Problem: Ich habe eine PID und möchte herausfinden, ob zu der PID ein Prozess existiert. Das ganze soll möglichst portabel sein. Unter Linux könnte ich herausfinden, ob /proc/<pid> existiert. Aber wie schaut's unter anderen Unixen aus (BSD, Solaris)? Geht das nicht auch portabler mit einem ensprechenden Systemaufruf? Gruß, Bernhard
Am Dienstag, 5. Juli 2005 18:46 schrieb Bernhard Walle: Hallo Bernhard,
folgendes Problem: Ich habe eine PID und möchte herausfinden, ob zu der PID ein Prozess existiert. Das ganze soll möglichst portabel sein. Unter Linux könnte ich herausfinden, ob /proc/<pid> existiert. Aber wie schaut's unter anderen Unixen aus (BSD, Solaris)? Geht das nicht auch portabler mit einem ensprechenden Systemaufruf?
was meinst Du zu: ps ax | grep <pid> Kann sein, dass ich voellig daneben liege, aber das ist mir spontan dazu eingefallen. MfG Th. Moritz -- Dank Alzheimer lerne ich dauernd neue Leute kennen!
Hallo, * Thomas Moritz [05.07.2005 19:21]:
Am Dienstag, 5. Juli 2005 18:46 schrieb Bernhard Walle:
folgendes Problem: Ich habe eine PID und möchte herausfinden, ob zu der PID ein Prozess existiert. Das ganze soll möglichst portabel sein. Unter Linux könnte ich herausfinden, ob /proc/<pid> existiert. Aber wie schaut's unter anderen Unixen aus (BSD, Solaris)? Geht das nicht auch portabler mit einem ensprechenden Systemaufruf?
was meinst Du zu:
ps ax | grep <pid>
Kann sein, dass ich voellig daneben liege, aber das ist mir spontan dazu eingefallen.
Ich meinte aus einem Programm. Aber natürlich kann man aus einem Programm auch andere Programme aufrufen. Hat nur den Nachteil, dass es mehr Overhead ist und dass die Aufrufparameter von ps auch nicht grad wirklich einheitlich sind. Das Programm ist in Qt geschrieben, sollte also auf jeder Plattform so funktionieren, die auch Qt unterstützt. (Für Windows werde ich das getrennt implementieren.) Gruß, Bernhard
Am Dienstag, 5. Juli 2005 19:31 schrieb Bernhard Walle: Hallo Bernhard,
was meinst Du zu:
ps ax | grep <pid>
Kann sein, dass ich voellig daneben liege, aber das ist mir spontan dazu eingefallen.
Ich meinte aus einem Programm. Aber natürlich kann man aus einem Programm auch andere Programme aufrufen. Hat nur den Nachteil, dass es mehr Overhead ist und dass die Aufrufparameter von ps auch nicht grad wirklich einheitlich sind.
Das Programm ist in Qt geschrieben, sollte also auf jeder Plattform so funktionieren, die auch Qt unterstützt. (Für Windows werde ich das getrennt implementieren.)
Eine andere Variante waere noch der Einsatz von kill () mit Signal 0. [ kill -s 0 <pid> ] Vielleicht laesst sich das besser umsetzten? kill liefert eine Fehlermeldung, wenn der Prozess nicht existiert. Nach den Sourcen habe ich jetzt allerdings nicht geschaut. Bin auch knapp bei Zeit:-( MfG Th. Moritz -- Traeume nicht Dein Leben sondern lebe deinen Traum!
Hallo, Am Tue, 05 Jul 2005, Thomas Moritz schrieb:
Am Dienstag, 5. Juli 2005 19:31 schrieb Bernhard Walle: Eine andere Variante waere noch der Einsatz von kill () mit Signal 0. [ kill -s 0 <pid> ] Vielleicht laesst sich das besser umsetzten?
==== man 2 kill ==== int kill(pid_t pid, int sig); [..] If sig is 0, then no signal is sent, but error checking is still performed. RETURN VALUE On success, zero is returned. On error, -1 is returned, and errno is set appropriately. ERRORS [..] ESRCH The pid or process group does not exist. Note that an existing process might be a zombie, a process which already committed termination, but has not yet been wait()ed for. CONFORMING TO SVr4, SVID, POSIX.1, X/OPEN, BSD 4.3 ==== Insbesondere das "Conforming To" sieht gut aus. -dnh -- Weitere üble Beschimpfungen bitte selber einfügen, mehr fällt mir im Moment nicht ein. [Bernd Brodesser zu Henne Vogelsang in suse-talk]
Hallo, * David Haller [05.07.2005 20:15]:
Am Tue, 05 Jul 2005, Thomas Moritz schrieb:
Am Dienstag, 5. Juli 2005 19:31 schrieb Bernhard Walle: Eine andere Variante waere noch der Einsatz von kill () mit Signal 0. [ kill -s 0 <pid> ] Vielleicht laesst sich das besser umsetzten?
==== man 2 kill ==== int kill(pid_t pid, int sig);
Ja, die Idee ist gut. So hab ich's dann auch umgesetzt. Gruß, Bernhard
participants (3)
-
Bernhard Walle
-
David Haller
-
Thomas Moritz