Category Archives: Linux/Unix/Windows

为什么vim不能正确地缩进html?

你需要这样: 引用 You have to add the following lines to your .vimrc to make sure vim uses file-specific indentions: filetype on filetype plugin on filetype indent on 看这里: http://stackoverflow.com/questions/10213744/vim-html-autoindent-not-working#10215433

代码示例:unix环境文件IO、出错处理

无干货,纯示例。 #include <fcntl.h> #include <stdio.h> int main(){ //先试着打开一个不存在的文件 char* filepath = "/home/kent/temp/test-file-io.txt"; int fd = open(filepath, O_RDWR); printf("The File Descriptor of an non-existing files is %d \n", fd); if(fd == -1){ perror(filepath); } //创建文件 fd = open(filepath, O_CREAT|O_RDWR, 0777); printf("The new created File Descriptor is %d \n", fd); //当前偏移量 int pos = lseek(fd, 0, SEEK_CUR); […]

代码示例:unix环境下signal处理

无干货,仅用作demo #include <stdio.h> #include <signal.h> static void print_sig(int); int main(){ signal(SIGQUIT, print_sig); signal(SIGKILL, print_sig); while(1){ pause();//挂起以等待信号 } } static void print_sig(int signo){ printf("Signal Encountered: %d\n", signo); } 执行它,然后用另一个进程执行kill -3 pid,可以在控制台看到输出"Signal Encountered: 3"; 但如果kill -9 pid,则看不到任何输出,因为UNIX环境规定kill -9不准block.

单个线程也能造成死锁

APUE:如果线程试图对一个mutex加锁两次,那么它就会陷入死锁。 分析一下:     1. 第一次上锁成功后,获得锁     2. 第二次上锁时需要等待锁被本线程释放;而本线程目前已经在等待锁,无法释放第一次获得的锁;所以这个等待将是无限期的。 可重入锁(reentrant lock)就是用来避免这种情况发生的: 第二次上锁时不需要等待第一次上的锁被释放;java的ReentrantLock和synchronized关键字都使用了这种机制。