там его дескриптор, не о его рантайм буфере речь, дескрипшен os.Stdout.Sync() // Sync commits the current contents of the file to stable storage. // Typically, this means flushing the file system's in-memory copy // of recently written data to disk. что никак не связано с std::flush, просто у плюсов тоже есть интернал буфер и флаш плюс минус тем же занимается
Так есть кернел буфер. stf:: flush сначала сбрасывает user space буфер, а затем ядерный
он в связке с чем-то используется, cout, std::basic_ostream
This manipulator may be used to produce an incomplete line of output immediately, e.g. when displaying output from a long-running process, logging activity of multiple threads or logging activity of a program that may crash unexpectedly. An explicit flush of std::cout is also necessary before a call to std::system, if the spawned process performs any screen I/O (a common example is std::system("pause") on Windows). In most other usual interactive I/O scenarios, std::endl is redundant when used with std::cout because any input from std::cin, output to std::cerr, or program termination forces a call to std::cout.flush(). When a complete line of output needs to be flushed, the std::endl manipulator may be used. When every output operation needs to be flushed, the std::unitbuf manipulator may be used.
Системный вызов на запись использует ядерный буфер? Правильно понял?
unix-like они вообще не буфферизируются
это мы про консоль говорим понятное дело
Тогда почему os.Stdout буферизированный? У него метод Write в цикле write сисколит
так он буферизированный на уровне рантайма
Смотрю код, не вижу такого
ну в смысле. ты из bufio.NewWriter допустим как уже выше отписали закидываешь сисколом в stdout, где на уровне кернела и дропаута буфера нет
Так у os.Stdout есть метод Sync(). Я могу сделать os.Stdout.Write(bytes) - это буфериз. или нет запись будет?
фактически, если у тебя os.Stdout не связан с реальным файлов, то смысла он не имеет
Обсуждают сегодня