Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bashfill
- [[ ! -e /dev/fd/69 ]] && exec ${CALLBACKFD:=69}<> <(:); # callback fd
- exec 9>&2 2> /dev/null;
- ${COMMAND:=$1} 0< "${INPUT:=$2}" 1> "${OUTPUT:=$3}" 2> "${ERROR:=${4:-/dev/fd/9}}" &
- exec 2>&9 9>&-;
- declare -gA $ALIAS[pid]=\$! $ALIAS[command]="$COMMAND" $ALIAS[0]="$INPUT" \
- $ALIAS[1]="$OUTPUT" $ALIAS[2]="$ERROR";
- disown \${$ALIAS[pid]};
- function ${ALIAS}.write() {
- (( \$# > 0 )) && {
- echo "\$@" > "$INPUT"
- } || {
- cat > "$INPUT";
- }
- }
- function ${ALIAS}.read() {
- read "\$@" < "$OUTPUT";
- }
- function ${ALIAS}.pid() {
- echo -n \${$ALIAS[pid]};
- }
- function ${ALIAS}.signal() { kill "\$@" \${$ALIAS[pid]}; }
- function ${ALIAS}.pause() { kill -s SIGSTOP \${$ALIAS[pid]}; }
- function ${ALIAS}.continue() { kill -s SIGCONT \${$ALIAS[pid]}; }
- function ${ALIAS}.die() {
- kill -s SIGKILL \${$ALIAS[pid]};
- unset -f $(echo -n ${ALIAS}.{signal,pause,continue,pid,read,write,die});
- unset $ALIAS; trap - SIGRTMIN;
- }
- trap "{
- read -u 69 __CALLBACK; eval \$__CALLBACK; unset __CALLBACK;
- }" SIGRTMIN;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement