|
|
|
Синхронное чтение вывода процесса
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)Barlone, в стандартный поток вывода никто не буферизует 7.19.3 Files, paragraph 7At program startup, three text streams are predefined and need not be opened explicitly - standard input (for reading conventional input), standard output (for writing conventional output), and standard error (for writing diagnostic output). As initially opened, the standard error stream is not fully buffered; the standard input and standard output streams are fully buffered if and only if the stream can be determined not to refer to an interactive device . Так что, если stdout это pipe, то вполне могут буферизовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2017, 10:41 |
|
||
|
Синхронное чтение вывода процесса
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)в стандартный поток вывода никто не буферизуетпроверяем: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Компилируем, запускаем test.exe Выводится "Hello", потом пауза, и через 10 секунд программа завершается. Так действительно не буферизуется. А теперь так: test.exe | find "Hello" Видим сначала паузу 10 секунд, потом выводится "Hello" и программа сразу завершается. Упс. А может это find виноват? Вставляем fflush(stdout) между printf и Sleep. Компилируем, запускаем test.exe | find "Hello". Выводится "Hello", потом пауза. Медитируем над результатом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2017, 12:29 |
|
||
|
Синхронное чтение вывода процесса
|
|||
|---|---|---|---|
|
#18+
Barlone, в моём случае видимо fflush не забыли ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2017, 12:49 |
|
||
|
Синхронное чтение вывода процесса
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)Dima T, через пайпы и читаю, дело в том что размер буфера для пайпа довольно большой MSDNnSize [in] The size of the buffer for the pipe, in bytes. The size is only a suggestion; the system uses the value to calculate an appropriate buffering mechanism. и пока он не заполнится процесс не стопорится.А откуда уверенность, что это не буферизация stdout? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2017, 12:57 |
|
||
|
Синхронное чтение вывода процесса
|
|||
|---|---|---|---|
|
#18+
BarloneА откуда уверенность, что это не буферизация stdout? тестовый пример составил с выводом времени ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2017, 15:36 |
|
||
|
Синхронное чтение вывода процесса
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan), все получилось? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2017, 05:18 |
|
||
|
Синхронное чтение вывода процесса
|
|||
|---|---|---|---|
|
#18+
Barlonekealon(Ruslan), все получилось? "легальными способами" - нет, смотрю альтернативные варианты пока держу хук на крайний случай ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2017, 10:33 |
|
||
|
|

start [/forum/topic.php?fid=16&gotonew=1&tid=1340502]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
142ms |
get topic data: |
11ms |
get first new msg: |
7ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
3ms |
| others: | 209ms |
| total: | 439ms |

| 0 / 0 |
