Determine whether process output is being redirected in C/C++
Have a look at this code:
int is_redirected(){ if (!isatty(fileno(stdout))){ fprintf(stdout, "argv, argc, someone is redirecting me elsewhere...\n"); return 1; } return 0;}/* ... */int main(int argc, char **argv){ if (is_redirected()) exit(-1); /* ... */}
That function will return 1 if the program is being redirected. Notice in the main(...)
how it is called. If the program was to run and is being redirected to stderr
or to a file the program exits immediately.