Это похоже на простой вопрос, но мне очень трудно найти ответ. Я пишу программу на C, где это кажется возможным (хотя и отдаленно) на некоторых системах, поскольку, как представляется, существуют ситуации, когда stdin имеет буфер только 4k.Что произойдет, если stdin заполняется?
Итак, на мой вопрос: существует ли стандартный способ работы ОС с заполнением stdin (т. Е. Стандартом де-факто, требованием posix и т. Д.)? Насколько предсказуемым является результат, если на самом деле существует какой-то стандартный способ справиться с ситуацией?
Просто разъяснение, вы не говорите о стандартном C I/O 'stdin' здесь, правильно? Тогда ответ прост: когда ядро видит, что буфер заполнен, он может просто заблокировать процесс, заполняющий буфер. Обратите внимание, что процесс, заполняющий «входные» буферы, обычно отличается от процесса, который фактически потребляет вход (например, терминальная программа в сравнении с приложением, используя стандартную библиотеку для чтения ввода с указателем 'stdin'' FILE'). –
Я не вижу ситуации, когда это действительно имеет значение. В общем, конец записи (например, через трубу) будет блокировать блок записи и неблокировать записи. Не могли бы вы уточнить * почему * это проблема? Думаю, этого не должно быть. –
@FelixPalmen Ему может быть просто любопытно. Было бы интересно узнать, как ОС справляется с этим, даже если это крайний край. –