Полуасинхронный канал

Это, кажется, проблема на их стороне, однако EPEL не нужен для Fedora. От их сайта:

Дополнительные Пакеты для Предприятия Linux (или EPEL) являются Специальной группой Fedora, которая создает, поддерживает и управляет высококачественным набором дополнительных пакетов для Предприятия Linux, включая, но не ограниченная, Red Hat Enterprise Linux (RHEL), CentOS и Научный Linux (SL).

11
02.06.2015, 15:56
6 ответов
[12153]Уведомление может быть сделано, например, сигналом на PID, который был передан в переменной окружения ([115498]kill -USR1 $EXTPID[115499]) или созданием файла ([115500]touch /path/to/file[115501]). [12154]Другая идея:[12155]Вы выполняете следующий процесс (тот, который должен начаться) с конвейера:[12156]или[12157]
6
27.01.2020, 19:57
[115102] Если я правильно понял ваш вопрос, то это должно сработать:[12195](трюк с fd 3 заключается в том, что некоторые (большинство) оболочки перенаправляют stdin в /dev/null с помощью [115578]&[115579]).[115105].
5
27.01.2020, 19:57
[115062] Это то, что я нашел методом проб и ошибок, с помощью входа Хауке:[12178]Эквивалентно:[12179](Последнее более очевидно, потому что [115550]{}[115551] все равно будет работать в подоболочке, если она находится внутри трубы. )[12180]Некоторые другие сигналы (в том числе [115552]QUIT[115553], [115554]TERM[115555] и [115556]USR1[115557]). тоже работает, однако в этом случае описание сигнала отображается на клемме.[12181]Интересно, является ли это изначальным замыслом сигнала [115558]PIPE[115559]. Согласно [115560]руководству[115561]: [12182]SIGPIPE[115674]: Сигнал [115675]PIPE[115676] посылается в процесс, когда он пытается писать в трубу без процесса, подключенного к другому концу.[12183] Это означает, что когда я искусственно посылаю сигнал трубы в подоболочку, он бесшумно заканчивается, оставляя конечного потребителя ([115564]d[115565]) одного.[12184] Это работает как в [115566]sh[115567], так и в [115568]bash[115569].[115077].
3
27.01.2020, 19:57
[116004] В bash можно использовать замену процесса [116353] [116354]. Команда в процессе подстановки работает асинхронно, ее не ждут.[12120]
4
27.01.2020, 19:57
[115807] Можно просто сделать:

Итак, когда [116126]d[116127] закончит, [116128]cat[116129] поглотит остальную часть выхода [116130]c[116131], пока не закончит.

Хорошо. После комментариев, я думаю, что ответ заключается в том, чтобы начать непосредственно [116132]d[116133] на заднем плане.

Do:

или используйте решение [116134]Stephane Chazelas[116135], если есть проблемы со считыванием [116136]d[116137] из [116138]stdin[116139].[115816].

0
27.01.2020, 19:57

Вы можете использовать программу sponge из пакета moreutils:

a | б | c | губка | d

sponge будет в конце вывода c , прежде чем направить его в d . Надеюсь, ты этого хотел.

0
27.01.2020, 19:57

Теги

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