歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> linux常用c函數:終端控制篇(三)

linux常用c函數:終端控制篇(三)

日期:2017/2/25 10:38:45   编辑:Linux教程
 struct timeval

  {

  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

Copyright © Linux教程網 All Rights Reserved