<html lang="en">
<head>
<title>isatty - Debugging with GDB</title>
<meta http-equiv="Content-Type" content="text/html">
<meta name="description" content="Debugging with GDB">
<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="List-of-Supported-Calls.html#List-of-Supported-Calls" title="List of Supported Calls">
<link rel="prev" href="gettimeofday.html#gettimeofday" title="gettimeofday">
<link rel="next" href="system.html#system" title="system">
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
<!--
Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
Free Software Foundation, Inc.

Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with the
Invariant Sections being ``Free Software'' and ``Free Software Needs
Free Documentation'', with the Front-Cover Texts being ``A GNU Manual,''
and with the Back-Cover Texts as in (a) below.

(a) The FSF's Back-Cover Text is: ``You are free to copy and modify
this GNU Manual.  Buying copies from GNU Press supports the FSF in
developing GNU and promoting software freedom.''-->
<meta http-equiv="Content-Style-Type" content="text/css">
<style type="text/css"><!--
  pre.display { font-family:inherit }
  pre.format  { font-family:inherit }
  pre.smalldisplay { font-family:inherit; font-size:smaller }
  pre.smallformat  { font-family:inherit; font-size:smaller }
  pre.smallexample { font-size:smaller }
  pre.smalllisp    { font-size:smaller }
  span.sc    { font-variant:small-caps }
  span.roman { font-family:serif; font-weight:normal; } 
  span.sansserif { font-family:sans-serif; font-weight:normal; } 
--></style>
<link rel="stylesheet" type="text/css" href="../cs.css">
</head>
<body>
<div class="node">
<a name="isatty"></a>
<p>
Next:&nbsp;<a rel="next" accesskey="n" href="system.html#system">system</a>,
Previous:&nbsp;<a rel="previous" accesskey="p" href="gettimeofday.html#gettimeofday">gettimeofday</a>,
Up:&nbsp;<a rel="up" accesskey="u" href="List-of-Supported-Calls.html#List-of-Supported-Calls">List of Supported Calls</a>
<hr>
</div>

<h5 class="unnumberedsubsubsec">isatty</h5>

<p><a name="index-isatty_002c-file_002di_002fo-system-call-2514"></a>
     <dl>
<dt>Synopsis:<dd>
     <pre class="smallexample">          int isatty(int fd);
</pre>
     <br><dt>Request:<dd>&lsquo;<samp><span class="samp">Fisatty,</span><var>fd</var></samp>&rsquo;

     <br><dt>Return value:<dd>Returns 1 if <var>fd</var> refers to the <span class="sc">gdb</span> console, 0 otherwise.

     <br><dt>Errors:<dd>
          <dl>
<dt><code>EINTR</code><dd>The call was interrupted by the user. 
</dl>

   </dl>

   <p>Note that the <code>isatty</code> call is treated as a special case: it returns
1 to the target if the file descriptor is attached
to the <span class="sc">gdb</span> console, 0 otherwise.  Implementing through system calls
would require implementing <code>ioctl</code> and would be more complex than
needed.

   </body></html>

