|
|
|
Синхронное чтение вывода процесса
|
|||
|---|---|---|---|
|
#18+
Доброго дня всем!!! есть консольное приложение (не моё), выводящее текст как можно организовать его "фриз" пока я не дам ему буфер для вывода? т.е. организовать что-то вроде Код: plaintext 1. 2. PS: про пайпы в курсе ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2017, 13:07 |
|
||
|
Синхронное чтение вывода процесса
|
|||
|---|---|---|---|
|
#18+
всё только для WinAPI ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2017, 13:08 |
|
||
|
Синхронное чтение вывода процесса
|
|||
|---|---|---|---|
|
#18+
Посмотри SuspendThread() / ResumeThread() Если прога однопоточная, то хэндл потока вернет CreateProcess(), если многопоточная то поизвращаться придется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2017, 13:24 |
|
||
|
Синхронное чтение вывода процесса
|
|||
|---|---|---|---|
|
#18+
Dima T, спасибо, но нужно ловить его именно на IO, как самом безопасном месте ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2017, 13:34 |
|
||
|
Синхронное чтение вывода процесса
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)нужно ловить его именно на IO, как самом безопасном месте Ничего не понял. Тебе еще момент остановки надо как-то определить? Вопрос был kealon(Ruslan)как можно организовать его "фриз" пока я не дам ему буфер для вывода? Сделай буфер с запасом и тормози как осталось меньше какого-то минимума. Пайпы чем не устроили? Как консоль читаешь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2017, 14:02 |
|
||
|
Синхронное чтение вывода процесса
|
|||
|---|---|---|---|
|
#18+
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. и пока он не заполнится процесс не стопорится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2017, 14:14 |
|
||
|
Синхронное чтение вывода процесса
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)и пока он не заполнится процесс не стопорится. Опять ничего не понимаю. Зачем тебе ждать заполнения буфера и остановки проги? Читай то что в пайпе есть по мере появления там данных. Ты бы поподробнее расписал что получить хочешь, а то ничего не понятно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2017, 15:47 |
|
||
|
Синхронное чтение вывода процесса
|
|||
|---|---|---|---|
|
#18+
Как-то делал подобное. Может пригодится Чтение из пайпа в буфер Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2017, 16:04 |
|
||
|
Синхронное чтение вывода процесса
|
|||
|---|---|---|---|
|
#18+
Dima Tkealon(Ruslan)и пока он не заполнится процесс не стопорится. Опять ничего не понимаю. Зачем тебе ждать заполнения буфера и остановки проги? Читай то что в пайпе есть по мере появления там данных. Ты бы поподробнее расписал что получить хочешь, а то ничего не понятно. стопорить нужно внешнию прогу после каждого её printf задать один байт на размер буфера для пайпа было бы медленным но решением, я просто читал бы до конца строки но он собака у меня например меньше 4кб не выходит, а это почти весь выхлоп из программы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2017, 16:14 |
|
||
|
Синхронное чтение вывода процесса
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)стопорить нужно внешнию прогу после каждого её printf В смысле тебе конкретную строчку поймать хочется и по ее выводу прогу тормознуть? Сомневаюсь что это возможно сделать наблюдая за выводом извне. Можно влезть в тот процесс и перехватывать там вызов printf(). Работать будет, но писать муторно, у Рихтера подробно расписано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2017, 16:29 |
|
||
|
Синхронное чтение вывода процесса
|
|||
|---|---|---|---|
|
#18+
Dima TМожно влезть в тот процесс и перехватывать там вызов printf(). Работать будет, но писать муторно, у Рихтера подробно расписано. этот путь знаю, но он очень нежелателен вот и ломаю голову ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2017, 16:58 |
|
||
|
Синхронное чтение вывода процесса
|
|||
|---|---|---|---|
|
#18+
вот и ломаю голову Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2017, 17:18 |
|
||
|
Синхронное чтение вывода процесса
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2017, 17:23 |
|
||
|
Синхронное чтение вывода процесса
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)Dima Tпропущено... Опять ничего не понимаю. Зачем тебе ждать заполнения буфера и остановки проги? Читай то что в пайпе есть по мере появления там данных. Ты бы поподробнее расписал что получить хочешь, а то ничего не понятно. стопорить нужно внешнию прогу после каждого её printf задать один байт на размер буфера для пайпа было бы медленным но решением, я просто читал бы до конца строки но он собака у меня например меньше 4кб не выходит, а это почти весь выхлоп из программыТак printf - это еще не io c точки зрения ОС, там еще на уровне rtl буферизация есть :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2017, 18:43 |
|
||
|
Синхронное чтение вывода процесса
|
|||
|---|---|---|---|
|
#18+
Barlone, в стандартный поток вывода никто не буферизует ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2017, 19:41 |
|
||
|
Синхронное чтение вывода процесса
|
|||
|---|---|---|---|
|
#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. и пока он не заполнится процесс не стопорится. так ну и фиг с ним, пусть работает... тебе то что? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2017, 11:39 |
|
||
|
Синхронное чтение вывода процесса
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)в стандартный поток вывода никто не буферизует Да щаззз... Это когда он идёт прямо на консоль, он может не буферизоваться или буферизоваться до строки, а при перенаправлении практически куда угодно он начинает очень даже сильно буферизоваться. RTL не дураки писали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2017, 14:37 |
|
||
|
Синхронное чтение вывода процесса
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Far в моём случае под F3 показывает вполне атомарно появляющиеся маленькие куски ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2017, 15:47 |
|
||
|
Синхронное чтение вывода процесса
|
|||
|---|---|---|---|
|
#18+
Bred eFeM вот и ломаю голову Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. и в каком месте тогда остановится порождённый процесс после вызова DebugActiveProcessStop? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2017, 15:58 |
|
||
|
Синхронное чтение вывода процесса
|
|||
|---|---|---|---|
|
#18+
и в каком месте тогда остановится порождённый процесс после вызова DebugActiveProcessStop?он не остановится, он запустится )), а остановится после DebugActiveProcess. а вот в каком месте - думаю, это не принципиально, так как дать "ему буфер для вывода" вполне будет возможно. (а если данные какие во время работы подменить, то посмотри апимоном или идой внутрь, - не выводится ли там, для начала, вся текстовка одним куском. ну и задачу тогда детальней решать надо) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2017, 16:46 |
|
||
|
Синхронное чтение вывода процесса
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2017, 17:01 |
|
||
|
Синхронное чтение вывода процесса
|
|||
|---|---|---|---|
|
#18+
Bred eFeM( http://delphiworld.narod.ru/base/exploration_tracer.html ) в отладку я знаю как вводить, проблему с безопасностью убивания процесса это не решает вот ссылки получше http://alexander-bagel.blogspot.ru/2012/10/debugger-1.html.html http://alexander-bagel.blogspot.ru/2012/11/debuger-2.html http://alexander-bagel.blogspot.ru/2012/11/debuger-3.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2017, 18:22 |
|
||
|
Синхронное чтение вывода процесса
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovRTL не дураки писали и предусмотрели управление буферизацией ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2017, 18:43 |
|
||
|
Синхронное чтение вывода процесса
|
|||
|---|---|---|---|
|
#18+
в отладку я знаю как вводитьну и выполняй пошагово и делай синхру когда тебе нужно. проблему с безопасностью убивания процесса это не решает да какие проблемы и зачем его убивать, пусть живёт сколько ему отмеряно. (или это новые условия задачи?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2017, 21:17 |
|
||
|
Синхронное чтение вывода процесса
|
|||
|---|---|---|---|
|
#18+
Bred eFeMв отладку я знаю как вводитьну и выполняй пошагово и делай синхру когда тебе нужно. проблему с безопасностью убивания процесса это не решает да какие проблемы и зачем его убивать, пусть живёт сколько ему отмеряно. (или это новые условия задачи?) Прога выполняет определённые вещи с очень большими файлами. Обрыв, который нужен по техзаданию, в этот момент может порушить систему. По ходу процесса она выдаёт процентовку (после каждой атомарной операции - это точно известно) вот потому и желательно 20139343 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2017, 10:32 |
|
||
|
|

start [/forum/topic.php?fid=16&tid=1340502]: |
0ms |
get settings: |
8ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
147ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
77ms |
get tp. blocked users: |
1ms |
| others: | 213ms |
| total: | 485ms |

| 0 / 0 |
