I'm writing a C program for OS X and Linux, and I want to tweak the output based on whether or not it's going to a terminal. I know we've covered how to do this in a shell script, e.g. here:
http://stackoverflow.com/questions/911816/detecting-the-output-stream-type-of-a-shell-script
But how do I do it in a C program?
From stackoverflow
-
Use
isatty()
:$ man isatty ISATTY(3) Linux Programmer's Manual ISATTY(3) NAME isatty - does this descriptor refer to a terminal SYNOPSIS #include <unistd.h> int isatty(int desc); DESCRIPTION returns 1 if desc is an open file descriptor connected to a terminal and 0 otherwise.
Since
stdout
is always file descriptor 1, you can do:if(isatty(1)) // stdout is a terminal
-
if (isatty (1)) fprintf (stdout, "Outputting to a terminal."); else fprintf (stdout, "Not outputting to a terminal.");
0 comments:
Post a Comment