博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ioctl函数的使用之查看终端屏幕大小
阅读量:4608 次
发布时间:2019-06-09

本文共 1277 字,大约阅读时间需要 4 分钟。

要想查看一个终端屏幕的大小,可以使用ioctl()函数,步骤如下。

1.首先找到对应终端的文件号,一般在   /dev/pts/....(0,1,2..)。具体几号需要自己验证。如在pts目录下使用命令

(echo   "abcde"   >  2)将abcde打印到2号终端上。

2,找到终端文件后,以2号为例,打开该文件,代码如下:

  int fd;

  #define           DEV        /dev/pts/2

  fd=open(DEV,O_RDONLY|O_NOCTTY)//以只读且不控制该终端的模式打开该文件,返回文件描述符

3.通过ioctl()函数操作来查看2号终端屏幕大小

  ioctl可以使用的命令列表可以通过      man ioctl_list   来查看,中间为命令,右面是返回值类型

  如查看屏幕大小的函数是TIOCGWINSZ,如果想要使用该函数和声明变量,必须要加入该函数的上面的头文件(备注:由于Linux下的man手册没有及时更新,所以需要自己在include下手动查找一下,验证此头文件是否改变。如TIOCGWINSZ函数的头文件改为

<asm/termios.h>)    

部分代码如下:

  struct      winsize    size;

  ioctl(fd,TIOCGWINSZ,&size);

  解释:由于TIOCGWINSZ的返回值类型是struct      winsize *  ,所以由此可以看出需要声明上面类型的变量来接,而返回值没有加const,所以应该被改变其中的值,所以声明的是变量,实参取地址。

4.打印返回值。

  问:虽然知道了返回值是个结构体。但是我们怎么知道结构体内有什么成员变量呢?

  解:通过tag查找,如果已经在vim中设置了tags( tags是将include目下所有文件生成索引数据文件,如果没有设置见附录安装),可以将光标放到要查找的类型上面(只能查找enum,struct,#define,typedef),如struct  winsize size的红色单词,然后按“ctrl”+"]",来进行查找,按“ctrl”+"T"返回。

  找到成员变量后打印大家应该都会了把,在这里就不列举了。

 

附录:ctags 的设置

ctags:建立查找索引 可以查找enum struct #define typedef

1.建立查找对象索引数据文件
[root@king IO]# cd /usr/include/
[root@king include]# ctags -R ./ 将include目下所有文件生成索引数据文件tags
2.修改vim配置文件 支持tags查找
[root@king include]# vim /etc/vimrc
增加 set tags=/usr/include/tags

3.使用方法

在vim中光标处于要查找的对象上,ctrl+]进行查找 ctrl+t 返回

 

转载于:https://www.cnblogs.com/edan/p/8830750.html

你可能感兴趣的文章
.net 编译原理
查看>>
mean 快速开发和现有技术的对比分析
查看>>
Metro Style app :浏览器扩展
查看>>
linux的kernel是怎样工作的(TI_DM36X_ARM系统)(1)
查看>>
[luogu4310] 绝世好题 (递推)
查看>>
[luogu3203 HNOI2010] 弹飞绵羊 (分块)
查看>>
-Dmaven.multiModuleProjectDirectory system propery is not set.
查看>>
Python2 unichr() 函数
查看>>
Python 字典 copy()方法
查看>>
Minimum Path Sum
查看>>
Remove Duplicates from Sorted Array II
查看>>
常量指针和指针常量巧妙记忆方法[转]
查看>>
python-haproxy作业讲解视频总结
查看>>
mui搜索框 搜索点击事件
查看>>
select2 下拉搜索控件
查看>>
WebAPI常见的鉴权方法,及其适用范围
查看>>
08. 删除重复&海量数据
查看>>
重新想象 Windows 8 Store Apps (71) - 其它: C# 调用 C++
查看>>
发布mvc遇到的HTTP错误 403.14-Forbidden解决办法
查看>>
记录一些好用的工具
查看>>