ioctl函数用于向设备发控制和配置命令。
#include <sys/ioctl.h>
int ioctl(int d, int request, ...);
d是某个设备的文件描述符。
request是ioctl的命令。
可变参数...取决于request,通常是指向变量或结构体的指针。
返回值:若出错则返回-1,若成功则返回其他值,返回值也是取决于request。
ioctl获取终端的大小,代码演示如下:
#include "./common/head.h" int main() { struct sinsize size; if(!isatty(STDOUT_FILENO)){ //isatty函数判断一个文件描述符是否是一个设备 printf("STDOUT_FILENO is not tty\n"); exit(1); } if( ioctl(STDOUT_FILENO, TIOCGWINSZ, &size) < 0 ){ perror("ioctl TIOCGWINSZ"); exit(1); } //打印屏幕有多少行多少列 printf("winSize = %d rows, %d columns\n", size.ws_row, size.ws_col); return 0; }
结果:
$ ./a.out
winSize = 28 rows, 79 columns