В документации сказано, что это для 3D-изображений, и вы можете передавать 2D-изображение.
Вы также можете взглянуть на более не поддерживаемый пример приложения . Он должен работать с версией ITK 4.2, возможно, до 4.6 или 4.8.
Мое решение состояло в том, чтобы использовать неименованный канал для передачи состояния контролирующему циклу. Нет никаких временных файлов, используемых для обмена состоянием так ничто к очистке. Если бы Вы были не уверены в количестве фоновых заданий, то условие повреждения могло бы быть [ -z "$(jobs -p)" ]
.
#!/bin/bash
exec 3<> <(:)
{ sleep 15 ; echo "sleep/exit $?" >&3 ; } &
while read -u 3 -t 1 -r STAT CODE || STAT="timeout" ; do
echo "stat: ${STAT}; code: ${CODE}"
if [ "${STAT}" = "sleep/exit" ] ; then
break
fi
done
#/bin/bash
#pgm to monitor
tail -f /var/log/messages >> /tmp/log&
# background cmd pid
pid=$!
# loop to monitor running background cmd
while :
do
ps ax | grep $pid | grep -v grep
ret=$?
if test "$ret" != "0"
then
echo "Monitored pid ended"
break
fi
sleep 5
done
wait $pid
echo $?
1: В bash $!
содержит PID последнего выполненного фонового процесса. Это все равно скажет вам, какой процесс отслеживать.
4: wait
ждет, пока процесс с PID
завершен (он будет блокироваться до завершения процесса, поэтому вы можете не вызывать его, пока не будете уверены, что процесс завершен), а затем возвращает код завершения завершенного процесса.
2, 3: пс
или пс | grep "$!"
может сказать вам, выполняется ли процесс еще. Вам решать, как понять результат и решить, насколько он близок к завершению. ( ps | grep
не является защитой от идиотов. Если у вас есть время, вы можете придумать более надежный способ узнать, выполняется ли процесс).
Вот скелет скрипта:
# simulate a long process that will have an identifiable exit code
(sleep 15 ; /bin/false) &
my_pid=$!
while ps | grep " $my_pid " # might also need | grep -v grep here
do
echo $my_pid is still in the ps output. Must still be running.
sleep 3
done
echo Oh, it looks like the process is done.
wait $my_pid
# The variable $? always holds the exit code of the last command to finish.
# Here it holds the exit code of $my_pid, since wait exits with that code.
my_status=$?
echo The exit status of the process was $my_status