Hallo,
und wieder ein Problem. Ich bekomme von einem anderen Programm seine PID mitgeteilt und möchte dann warten bis das Programm zu ende ist. Also die PID abfragen ob sie noch existiert. Leider finde ich keinen Weg wie man es in Freepascal umsetzt.
FpWaitPid liefert immer -1.
Gibt es vielleicht einen anderen ausser das man ps aufruft und darin die PID sucht? Gibt es vielleicht ein Signal welches man per FpKill senden kann? So eine art NOP.
Vielen dank im voraus
[gelöst] Prüfen ob eine bestimmte PID läuft (Unix)
[gelöst] Prüfen ob eine bestimmte PID läuft (Unix)
Zuletzt geändert von JD55 am Do 4. Jun 2020, 15:31, insgesamt 1-mal geändert.
-
- Lazarusforum e. V.
- Beiträge: 3178
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
Re: Prüfen ob eine bestimmte PID läuft (Unix)
Handelt es sich bei "einem anderen Programm" und einen Child-Prozess (wird von deinem Programm gestartet) oder wird es unabhängig von deinem Programm gestartet, läuft möglicherweise bereits vorher?
FPWaitPid und FPWait funktionieren nur auf Child-Prozessen siehe https://www.freepascal.org/docs-html/rt ... itpid.html bzw man waitpid. Soweit ich gelesen habe, bietet Linux keine Standard-API dafür an. Es dürfte am einfachsten sein, das Verzeichnis /proc/$pid/ zu oder aber ein 0-Signal zu senden, wie unter https://stackoverflow.com/questions/105 ... -to-finish vorgeschlagen.
FPWaitPid und FPWait funktionieren nur auf Child-Prozessen siehe https://www.freepascal.org/docs-html/rt ... itpid.html bzw man waitpid. Soweit ich gelesen habe, bietet Linux keine Standard-API dafür an. Es dürfte am einfachsten sein, das Verzeichnis /proc/$pid/ zu oder aber ein 0-Signal zu senden, wie unter https://stackoverflow.com/questions/105 ... -to-finish vorgeschlagen.
man kill (1) hat geschrieben:If signal is 0, then no actual signal is sent, but error checking is still performed.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Re: Prüfen ob eine bestimmte PID läuft (Unix)
Vielen dank,
trotz intensiver suche habe ich das nicht gefunden. Das mit FpKill(PID,0) klappt wunderbar.
trotz intensiver suche habe ich das nicht gefunden. Das mit FpKill(PID,0) klappt wunderbar.