Powiedz, że mam pid w ręku mypid=$$
czy jest jakaś komenda bash / system, której mogę użyć, by nasłuchiwać wyjścia z tego procesu z danym pid?
Jeśli nie istnieje żaden proces z mypid, myślę, że polecenie powinno po prostu zawieść.
bash
shell-script
process
proc
Alexander Mills
źródło
źródło
wait
z funkcji powłoki lubwait()
biblioteki C. AFAIK nie ma standardowego sposobu oczekiwania na proces niebędący dzieckiem. Ponadto nie jest jasne, czy funkcja C # może to zrobić (zależy od tego, czym jest „powiązany proces”).Odpowiedzi:
Dostałem to, czego potrzebowałem od tej odpowiedzi: https://stackoverflow.com/a/41613532/1223975
.. wyłączy się przy użyciu
wait <pid>
będzie działać tylko wtedy, gdy ten pid jest procesem potomnym bieżącego procesu .Jednak dla każdego procesu będą działać następujące czynności:
Poczekaj na zakończenie dowolnego procesu
Linux:
Darwin (wymaga, aby
$pid
mieć otwarte pliki):Z limitem czasu (sekundy)
Linux:
Darwin (wymaga, aby
$pid
mieć otwarte pliki):źródło
Możesz użyć wbudowanego basha
wait
:Wykorzystuje wywołanie systemowe
waitpid()
.źródło
bash: wait: pid 47760 is not a child of this shell
... z powrotem do deski kreślarskiej lolJeśli chodzi o https://stackoverflow.com/a/41613532/1223975 rozwiązanie, które
Timeout in Seconds
Darwin
opublikował Alexander Mills , jest to obejście dla systemu operacyjnego typu UNIX, który nie ma GNUtail
. Nie jest on specyficzny dlaDarwin
, ale w zależności od wieku systemu operacyjnego typu UNIX, oferowany wiersz poleceń jest bardziej złożony niż to konieczne i może zawieść:W co najmniej jednym starym systemie UNIX
lsof
argument+r 1m%s
nie działa (nawet w przypadku administratora):m%s
Jest specyfikacja formatu wyjściowego. Prostszy postprocesor tego nie wymaga. Na przykład następujące polecenie czeka na PID 5959 do pięciu sekund:W tym przykładzie, jeśli PID 5959 wychodzi z własnej woli przed upływem pięciu sekund,
${?}
jest0
. Jeśli nie,${?}
powróci1
po pięciu sekundach.Może to być również warto wyraźnie zauważyć, że w
+r 1
The1
jest interwał sondowania (w sekundach), więc może być zmieniona odpowiednio do sytuacji.źródło