Я запускаю программу, которая запускает процесс, а затем этот процесс записывает в stdout, который использует моя программа. Проблема в том, что мне нужен результат около 42000 байт. Кажется, размер буфера stdout составляет 8192, и я не хочу, чтобы он закрашивался до тех пор, пока он не достигнет 42000. Есть ли способ установить это?увеличение стандартного размера буфера вывода
Я попытался это:
setvbuf (stdout , NULL , _IOFBF , 50000); // ie set it to 50000 bytes
на код для подпроцесса, но это, кажется, не работает. У кого-нибудь есть идеи?
Обратите внимание, что 'setvbuf()' необходимо называть _before_ первой операцией, которая записывает в буфер; после этого вызов 'setvbuf()' не имеет никакого эффекта. –
@JonathanLeffler: Нет, после этого у него неопределенное поведение. Это может привести к повреждению файла или сбою всей программы (или компьютера). –