你们可以告诉我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;
}
答案 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保留给stdin
,stdout
和stderr
。所有其他索引都引用可以/已经打开的文件描述符。
答案 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
}