6#--------------------------------------------------------------------------------------
 
    8#                   Utility script for batch queue functions.
 
   10#--------------------------------------------------------------------------------------
 
   14# Put command(s) in given queue; do not submit job.
 
   17# \param   2-N       command(s)
 
   24    echo -n "$*;" >> $queue_name
 
   29# Put command(s) in given queue and submit job.
 
   32# \param   2-N       command(s)
 
   39    echo "$*" >> $queue_name
 
   48# \param   3         sleep time [s]
 
   56    if [[ -e $queue_name ]]; then
 
   58        if [[ -p $queue_name ]]; then
 
   59            fatal "Queue $queue_name in use."
 
   63        mkfifo $queue_name                                # create a new FIFO
 
   66    fd=7                                                  # file descriptor
 
   68    eval "exec $fd<>$queue_name"                          # attach file descriptor to FIFO
 
   70    while read job <& $fd; do                             # read job from file descriptor
 
   72        if [[ -n $job ]]; then
 
   74            if [[ $job = "exit" ]]; then
 
   79            eval exec $job &                              # submit job
 
   83            while (( ${#jobstates} >= $queue_size )); do
 
   89    rm -f $queue_name                                     # remove FIFO