UNIX伪终端

介绍 最近在研究有关UNIX的相关理论知识,在此记录相关重要概念备忘。 概述 伪终端是指,对于一个应用程序而言,它看似一个终端,但事实上它并不是一个真正的终端。 通常一个进程打开伪终端主设备,调用fork。子进程建立一个新的会话,打开一个相应的伪终端从设备,将其文件描述符复制到标准输入输出错误,然后调用exec。伪终端从设备称为子进程的控制终端。 看起来像一个双向管道,从设备上的终端行规程使得我们拥有普通管道没有的其他处理能力。 伪终端的典型用途 网络登录服务器 最典型的例子是telnetd和rlogind … 阅读更多

UNIX 终端I/O

介绍 我阅读并且学习了有关于UNIX系统终端I/O相关的内容。在此记录一些比较关键的概念。 引论 终端I/O十分复杂,原因之一是它应用于许多事物。 综述 终端I/O的两种工作模式:规范模式输入处理(默认)、非规范模式输入处理。 规范模式下,对于每一个读请求,终端驱动程序最多返回一行。 可以认为终端设备是由内核中的终端驱动程序控制的,每一个终端设备都有一个输入队列和一个输出队列。 开启回显功能时,在输入队列和输出队列之间有一个隐含连接。 输入队列长度是有限值。 输出队列虽然也有限,但是程序并不能获取这个值。在 … 阅读更多

通过Gparted Live ISO可引导镜像调整硬盘分区大小

介绍 手上有一张安装了Openwrt的8G的TF卡,根分区的容量已经不太能够满足我的使用需求了。所以开始着手扩大根分区的大小。根分区的所使用的的文件系统格式是Ext4。首先,尝试使用DiskGenius等Windows下的工具进行扩容,很遗憾都不可以。于是准备使用Gparted进行扩容。由于该工具需要在Linux环境下运行,我不太想安装为此安装一个Linux发行版虚拟机所以使用Gparted的轻量ISO镜像配合Virtual Box虚拟机进行使用。 准备工作 首先下载安装VritualBox虚拟机和 VM … 阅读更多

YouCompleteMe 建立 C/C++ CMmake工程的索引

介绍 如果安装完YouCompleteMe并配置好后(本站有过程记录,点击这里查看),就可以使用单文件来检测代码提示效果了。但是,当S&E打开他的C/C++工程时,却发现代码提示、跳转等功能不能正常使用。在查阅文档后,S&E发现原来是YouCompleteMe相关的索引数据库没有建立,相关的编译选项并不正确,所以YouCompleteMe所使用的的clangd就不能将多个源文件联系起来。 方法 如果是使用CMake建立工程,则可以在CMakeList.txt中加入 set( CMAKE_EX … 阅读更多

Vim 代码提示插件 YouCompleteMe 安装与配置

介绍 对于在Vim下的C/C++程序编写,如果有代码提示插件会大大提高编写效率。大型IDE用的多了,刚回归Vim的S&E比较依赖这个。正好YouCompleteMe能够满足他的相关需求。索性把安装与配置的过程记录在这里,以供下次回忆使用。 除了C/C++,YouCompleteMe支持Java、Go、C#、Objective-C、CUDA等,可以说是比较强大了。但是话说,写Java为什么要用Vim呢?IDEA貌似更好。 使用后发现这插件还支持代码跳转、引用查找、修改函数名和格式调整等操作,挺方便。 … 阅读更多

Vim主题 spf13-vim.sh 的安装与使用

Vim主题介绍 我经常使用vim为在Linux下的主要的代码编辑器。每当SSH进入一个新的开发系统环境,为了编写方便,他总是需要手动安装Vim并配置各类常用插件。spf13-vim.sh是一个使用于Vim的插件和相关资源的发行版。一条命令,即可以自动安装常用的配套的插件环境。 Github仓库地址:https://github.com/spf13/spf13-vim 心得 S&E感觉这个就好像快速安装了一个以Vim为核心的IDE(可以类比Vscode)。然后,spf13-vim.sh产生一个比较规范 … 阅读更多

Vim 8.2 源码编译安装 添加Python3扩展

介绍 为了安装YouCompleteMe这类插件,需要将Vim升级至比较高的版本并且启用Python3扩展。所以,这里提供的是通过源码安装Vim最新版本的过程记录。 这里使用到的Vim源代码仓库地址:https://github.com/vim/vim/ 编译安装默认版本 在编译安装之前先要安装相关的工具以及依赖 % sudo apt install git make clang libpython3-dev 选择适当的目录执行克隆命令 % git clone https://github.com/vim/ … 阅读更多

en_USEnglish