Check output device is a terminal: Difference between revisions
Content added Content deleted
(initial page with C) |
(added ocaml) |
||
Line 28: | Line 28: | ||
$ ./a.out | cat |
$ ./a.out | cat |
||
stdout is not tty |
stdout is not tty |
||
</pre> |
|||
=={{header|OCaml}}== |
|||
<lang ocaml>let () = |
|||
print_endline begin |
|||
if Unix.isatty Unix.stdout |
|||
then "Output goes to tty." |
|||
else "Output doesn't go to tty." |
|||
end</lang> |
|||
Testing in interpreted mode: |
|||
<pre>$ ocaml unix.cma istty.ml |
|||
Output goes to tty. |
|||
$ ocaml unix.cma istty.ml > tmp |
|||
$ cat tmp |
|||
Output doesn't go to tty. |
|||
$ ocaml unix.cma istty.ml | cat |
|||
Output doesn't go to tty. |
|||
</pre> |
</pre> |
Revision as of 07:54, 28 March 2013
In this task, the job is to check whatever output filehandle exits to the terminal and mention whatever output goes to it or not.
C
Use isatty()
on file descriptor to determine if it's a TTY. To get the file descriptor from a FILE*
pointer, use fileno
:
<lang c>#include <unistd.h> // for isatty()
- include <stdio.h> // for fileno()
int main() {
puts(isatty(fileno(stdout)) ? "stdout is tty" : "stdout is not tty"); return 0;
}</lang>
- Output:
$ ./a.out stdout is tty $ ./a.out > tmp $ cat tmp stdout is not tty $ ./a.out | cat stdout is not tty
OCaml
<lang ocaml>let () =
print_endline begin if Unix.isatty Unix.stdout then "Output goes to tty." else "Output doesn't go to tty." end</lang>
Testing in interpreted mode:
$ ocaml unix.cma istty.ml Output goes to tty. $ ocaml unix.cma istty.ml > tmp $ cat tmp Output doesn't go to tty. $ ocaml unix.cma istty.ml | cat Output doesn't go to tty.