Eg.
# detect timeout control
function detect_timeout()
{
wait_time=8
# start conmand bg
( $* ) & command_pid=$!
# start time_out process bg
( sleep ${wait_time} ; kill -HUP ${command_pid} ) 2> /dev/null & sleep_pid=$!
wait $command_pid 2> /dev/null;
command_status=$?
pkill -HUP -P ${sleep_pid}
wait ${sleep_pid}
return ${command_status};
}
备注
- 使用“()”括起来的内容是在子shell中执行的
- 使用“&”可以使得命令在后台执行
- “$!”可以获取到上一个后台进程的PID
wait
指定的进程执行完毕kill -HUP
发送SIGHUP信号给指定的进程pkill -HUP -P
给父进程发送SIGHUP信号