Как выглядит файл ~ / git-учетных данных?

Обратите внимание на спецификацию POSIX для функции write () :

Функция write () завершится ошибкой, если:

… Предпринята попытка записи в канал или FIFO, который не открыт для чтения каким-либо процессом или у которого открыт только один конец. Сигнал SIGPIPE также должен быть отправлен в поток.

Итак, последовательность событий такова:

  1. Процесс head завершается. Это приводит к закрытию всех его открытых файловых дескрипторов, включая его стандартный ввод, который является одним из концов конвейера.

  2. Процесс dmesg вызывает write () на своем стандартном выходе, который является другим концом конвейера.

  3. Это вызывает доставку SIGPIPE процессу dmesg .

  4. dmesg не имеет специальной обработки SIGPIPE, поэтому применяется действие по умолчанию, которое заключается в завершении процесса.

Вы можете поэкспериментировать с этим, изменив действие для сигнала SIGPIPE. Например, этот конвейер завершается после печати одной строки:

$ yes | head -1
y
$

, но если вы игнорируете SIGPIPE, он не завершается:

$ trap '' PIPE
$ yes | head -1
y

На этом этапе процесс да все еще пытается записать в конвейер но записи не работают с EPIPE.

0
20.10.2018, 11:25
1 ответ

Формат описан здесь:

The.git-credentials file is stored in plaintext. Each credential is stored on its own line as a URL like:

https://user:pass@example.com
4
28.01.2020, 02:31

Теги

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