什么是C中的isatty()?

时间:2016-03-28 07:55:05

标签: c linux

你们可以告诉我c中isatty()的参数是什么。 我有以下代码,但我不明白第一个输出三个数字是1,所有左边是0。

#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
int main(){
        for(int i=0;i<100;i++){
                int t=isatty(i);
                printf("%d",t);
        }
        return 0;
}

7 个答案:

答案 0 :(得分:6)

快速查看您的手册页会显示:

DESCRIPTION
     The isatty() function tests whether  fildes,  an  open  file
     descriptor, is associated with a terminal device.

进一步调查将使您发现文件描述符0,1和2(也称为STDIN_FILENO,STDOUT_FILENO和STDERR_FILENO)按惯例设置为在程序从终端运行时指向终端。

答案 1 :(得分:4)

isatty()是一个函数,如果fd - (文件描述符)引用终端,则返回1

它位于#include

之下
#include<unistd.h>

答案 2 :(得分:1)

它告诉文件描述符是否连接到终端。

您可以在此处详细了解:http://linux.die.net/man/3/isatty

答案 3 :(得分:1)

但isatty()采用的参数含义是什么?

该参数是标准I / O库的文件描述符表的索引。索引0,1和2保留给stdinstdoutstderr。所有其他索引都引用可以/已经打开的文件描述符。

答案 4 :(得分:0)

检查ref

  

isatty - 测试文件描述符是否引用终端

答案 5 :(得分:0)

Isatty()用于检查fd(文件描述符)是否属于终端或命令行提示符。 该函数在属于终端时为您提供二进制值1 它在包含以下内容的代码中使用 头文件中的unistd.h关键字 如果fd是指向终端的打开文件描述符,则isatty()给您1;否则返回0

答案 6 :(得分:0)

如果您仍然感兴趣,我几年前就遇到了 MSDOS 实现。

/*
** Return "true" if fd is a device, else "false"
*/
isatty(fd) int fd; {
  fd;               /* fetch handle */
  #asm
    push bx         ; save 2nd reg
    mov  bx,ax      ; place handle
    mov  ax,4400h   ; ioctl get info function
    int 21h         ; call BDOS
    pop  bx         ; restore 2nd reg
    mov  ax,dx      ; fetch info bits
    and  ax,80h     ; isdev bit
  #endasm
 }