use ps -f and awk to emulate pgrep

There is no pgrep in git for windows
This commit is contained in:
spacewander 2016-01-20 11:39:25 +08:00
parent 98d0d8c642
commit afce25cd65

View file

@ -317,7 +317,20 @@ _exit() {
stty sane; echo; echo "caught signal, shutting down"
IFS=$'\n'
pid_list=( $(pgrep -P $$) )
# The format of `ps` is different between Windows and other platforms,
# so we need to calculate the total column number(COL_NUM) of header first.
# Why don't we just use the last column?
# Because the body of CMD column may contain space and be treated as multiple fileds.
pid_list=( $(ps -f |
awk -v ppid=$$ 'NR == 1 {
COL_NUM = NF
}
$3 == ppid {
# filter out temp processes created in this subshell
if ($COL_NUM != "ps" && $COL_NUM != "awk" && $COL_NUM !~ "bash$")
print $2
}')
)
IFS="$defaultIFS"
local _pid