setvbuf on STDOUT safe for other processes?

1.7k Views Asked by At

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.

1

There are 1 best solutions below

2
On

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.