Что сигнал X отправляет его клиентам, когда он получает SIGINT?

Следующее переформатирует даты:

dir -1 backups | awk '/Complete\\ Backup\\ .*\.tar\.bz2/ { gsub(/\\/, ""); sub(/Complete Backup /, ""); sub(/.tar.bz2/, ""); gsub(/-/, " "); print strftime("%c", mktime($0)); }'

И вот способ получить это в выбор:

OIFS="$IFS"; IFS=$'\n'; set -- $(dir -1 backups | awk '/Complete\\ Backup\\ .*\.tar\.bz2/ { gsub(/\\/, ""); sub(/Complete Backup /, ""); sub(/.tar.bz2/, ""); gsub(/-/, " "); print strftime("%c", mktime($0)); }'); IFS="$OIFS"
select date in "$@"; do echo "$date"; done

Вот версия, которая сортирует даты:

OIFS="$IFS"
IFS=$'\n'

set -- $(
    dir -1 backups |
    awk '/Complete\\ Backup\\ .*\.tar\.bz2/ \
         {
            gsub(/\\/, "");
            sub(/Complete Backup /, "");
            sub(/.tar.bz2/, "");
            gsub(/-/, " ");
            VAL[NR] = mktime($0);
         }

         END \
         {
            for ( i = asort(VAL); i > 0; i-- )
            {
                    print strftime("%a %b %d %T %Z %Y", VAL[i]);
            }
         }'
    )

IFS="$OIFS"

select date in "$@"
do
    echo "$date"
done
3
20.06.2014, 04:13
1 ответ

X-сервер не посылает сигнал своим клиентам. В общем, это невозможно, так как клиент и сервер могут даже не работать на одной машине.

Связь между сервером и клиентом проходит через сокет . Когда сервер умирает, его конец сокета закрывается. Решение о том, как на это реагировать, принимает клиентское приложение; большинство из них печатает сообщение об ошибке и завершает работу.

Если клиент является терминальным эмулятором, то, когда он завершает работу, он посылает SIGHUP своему управляющему процессу, который обычно является оболочкой (shell). Оболочка, в свою очередь, отправляет SIGHUP главному процессу каждого задания переднего плана или фона.

.
4
27.01.2020, 21:19

Теги

Похожие вопросы