rApt0r
rApt0r

Reputation: 61

setvbuf on STDOUT safe for other processes?

I am using HP-UX. I want to disable buffering on stdout to ensure that every line of code is printed in case of core dump with below command:

setvbuf(stdout, NULL, _IONBF, 0); // turn off buffering for stdout

In this case, does it also affect other processes printing to stdout which is being redirected to some log file ? I want to know if this change is only local to process being executed or not. Also, can i disable the buffering within the process and later on set it _IO_FBF again within the code ? (fflush before each call )

PS: I know this will disable buffering and have worse I/O performance, but i want to do this only for debugging purposes.

Upvotes: 6

Views: 1801

Answers (1)

Kyle Jones
Kyle Jones

Reputation: 5532

The setvbuf call only affects stdio routines in the current process and any children fork'd but not exec'd.

How stdio responds when setvbuf is called multiple times on the same stream is not specified in the C standard, so do not issue multiple calls in code you want to be portable across C implementations.

Upvotes: 1

Related Questions