Pidを持っているとしましょう、mypid=$$
指定されたpidでそのプロセスの終了をリッスンするために使用できるbash /システムコマンドはありますか?
Mypidのプロセスが存在しない場合、コマンドは単に失敗するはずです。
私はこの答えから必要なものを手に入れました: https://stackoverflow.com/a/41613532/1223975
.. wait <pid>
は、そのpidが現在のプロセスの子プロセスである場合にのみ機能します。
ただし、以下はすべてのプロセスで機能します。
Linux:
tail --pid=$pid -f /dev/null
ダーウィン($pid
には開いているファイルがあります):
lsof -p $pid +r 1 &>/dev/null
Linux:
timeout $timeout tail --pid=$pid -f /dev/null
ダーウィン($pid
には開いているファイルがあります):
lsof -p $pid +r 1m%s -t | grep -qm1 $(date -v+${timeout}S +%s 2>/dev/null || echo INF)
組み込みのbash wait
を使用できます。
_$ sleep 10 &
[2] 28751
$ wait 28751
[2]- Done sleep 10
$ help wait
wait: wait [-n] [id ...]
Wait for job completion and return exit status.
Waits for each process identified by an ID, which may be a process ID or a
job specification, and reports its termination status. If ID is not
given, waits for all currently active child processes, and the return
status is zero. If ID is a a job specification, waits for all processes
in that job's pipeline.
If the -n option is supplied, waits for the next job to terminate and
returns its exit status.
Exit Status:
Returns the status of the last ID; fails if ID is invalid or an invalid
option is given.
_
システムコールwaitpid()
を使用します。
_$ whatis waitpid
waitpid (2) - wait for process to change state
_