Velocidex / WinPmem

The multi-platform memory acquisition tool.
Apache License 2.0
695 stars 102 forks source link

Add flush after printf #32

Open vletoux opened 3 years ago

vletoux commented 3 years ago

Thanks for this excellent tool !

I tried to add a GUI over WinPmem for end user by redirecting stdin and stdout.

Short version: the output get buffered all at once when the program is terminating under a non console program. Which prohibits display console information provided by WinPmem when the work is in progress.

After a lot of investigation, I found out this article https://www.codeproject.com/Articles/16163/Real-Time-Console-Output-Redirection which points that under a pipe, the flush behavior of printf under MS C lib is changed when there is no console behind.

This problem will be fixed if a flush is added after each printf.

vivianezw commented 3 years ago

Thank you, this is a very interesting observation. I observed similar things with stdin/out and pipes and maybe hit a brick wall. A flush can't hurt and maybe it prevents some of these strange effects. WriteConsole also seems to avoid a lot of issues which printf has sometimes.

I don't have time at the moment. Maybe you could do a pull request?

vletoux commented 3 years ago

Done (#34 )