在LINUX终端和VIM下复制粘贴

在 GUI 界面下,我们可以很自由的复制粘贴。但是在字符界面下,我们不得不用鼠标选定,然后单击右健,选择复制,再到别处去 Ctrl-v。并且对于那些用没有配置过的 VIM 来说,VIM 的粘贴板和 X Window 的粘贴板还不共享。这在码字的过程中,感觉非常不流畅。下面,我们就尝试解决这个问题。

首先我们得让 VIM 和 X Window 共享一个粘贴板,这样我们就可以像在 GUI 界面下一样去复制粘贴了。我们可以在自己的 VIM 配置文件 .vimrc 里添加这么一行:

1
set clipboard=unamedplus

阅读全文

Linux 系统调用

系统调用是系统内核提供给用户态程序的一系列API,这样应用程序就可以通过系统调用来请求操作系统内核管理的资源[1]。本文尝试分析在Linux下是如何使用linux内核给我们提供的API,并分析其实现过程。

一、用户态

不管我们是打开一个文件,接收一个socket包,还是获取当前进程信息,都需要调用内核给我们提供的API。这里,我们可以通过strace这个工具,来跟踪一个程序调用的系统函数。比如下面是命令”strace whoami”的输出结果:

阅读全文

利用 QEMU 模拟嵌入式系统制作全过程

这篇文章,将介绍如何用 QEMU 来搭建一个基于 ARM 的嵌入式 Linux 系统。通过该文章,你可以学习到如何配置 Kernel,如何交叉编译 Kernel,如何配置 busybox 并编译,如何制作 initramfs,如何制作根文件系统,如何定制自己的 uboot,如何通过 uboot 向 kernel 传递参数等。开始干活!

环境搭建

在实现我们的目标之前,我们需要搭建自己的工作环境。在这里,假设你的主机上已经有 gcc 本地编译环境,并运行 Ubuntu 12.10。但是这并不影响在其他的 linux 平台上进行,只要修改一下对应的命令就可以了。

阅读全文

11.8-const

const 关键字用来修饰一个对象,使其成为一个只读对象。比如:

1
const int n=10;

但是 const 所修饰的对象并不等于一个常量表达式。const 修饰的对象是一个运行时对象,而一个常量表达式是一个编译时对象。所以这也可以用来解释为什么用 const 修饰的整数来初始化一个数组是不行的。比如:

1
int a[n]; //error

阅读全文