{
time_t tv_sec;
time_t tv_usec;
};
返回值 如果參數timeout設為NULL則表示select()沒有timeout。
錯誤代碼 執行成功則返回文件描述詞狀態已改變的個數,如果返回0代表在描述詞狀態改變前已超過timeout時間,當有錯誤發生時則返回-1,錯誤原因存於errno,此時參數readfds,writefds,exceptfds和timeout的值變成不可預測。
EBADF 文件描述詞為無效的或該文件已關閉
EINTR 此調用被信號所中斷
EINVAL 參數n 為負值。
ENOMEM 核心內存不足
范例 常見的程序片段:fs_set readset;
FD_ZERO(&readset);
FD_SET(fd,&readset);
select(fd+1,&readset,NULL,NULL,NULL);
if(FD_ISSET(fd,readset){……}
ttyname(返回一終端機名稱)
相關函數 Isatty
表頭文件 #include<unistd.h>
定義函數 char * ttyname(int desc);
函數說明 如果參數desc所代表的文件描述詞為一終端機,則會將此終端機名稱由一字符串指針返回,否則返回NULL。
返回值 如果成功則返回指向終端機名稱的字符串指針,有錯誤情況發生時則返回NULL。
范例 #include<unistd.h>
#include<sys/types.h>
#include <sys/stat.h>
#include<fcntl.h>
main()
{
int fd;
char * file = “/dev/tty”;
fd = open (fiel,O_RDONLY);
printf(“%s”,file);
if(isatty(fd)){
printf(“is a tty.\n”);
printf(“ttyname = %s \n”,ttyname(fd));
}
else printf(“ is not a tty\n”);
close(fd);
}
執行 /dev/tty is a tty
ttyname = /dev/tty