首页

linux fork 写时拷贝的本质

在做linux c编程的时候,我们知道进程fork的时候,有一个copy on write的机制,关于这个概念可能有的朋友还不是很清楚,我们拿一段程序来说明一下: #include<stdio.h> #include<unistd.h> int main (void) { int *p = malloc(sizeof(int)); *p =...

C语言中system和exec的本质区别

system是用shell来调用程序=fork+exec+waitpid. 而exec是直接让你的程序代替用来的程序运行   system 是在单独的进程中执行命令,完了还会回到你的程序中。 而exec函数是直接在你的进程中执行新的程序,新的程序会把你的程序覆盖,除非调用出错,否则你再也回不到exec后面的代码,就是说你的程序就变成了exec调用的那个程序了.

汉字转拼音占内存更少转换速度更快的程序

程序地址:https://github.com/jishipu/Chinese2Pinyin 借鉴使用Redis字符操作库SDS,简化程序编写,提高安全性和可移植性。 本汉字转拼音程序仅支持输入字符串是utf-8编码的情况,其它编码,程序会不做处理 原文输出。 将常见20902个汉字的拼音按照unicode编码的大小排序写到文件PinyinData.txt中, 因...

dup and dup2的剖析  

dup和dup2都可用来复制一个现存的文件描述符,使两个文件描述符指向同一个file结构体。如果两个文件描述符指向同一个file结构体,File Status Flag和读写位置只保存一份在file结构体中,并且file结构体的引用计数是2。如果两次open同一文件得到两个文件描述符,则每个描述符对应一个不同的file结构体,可以有不同的File Status Flag和读写位置。请注意区分这两种...

libev源码学习  

先来看一段程序: #include <unistd.h> #include <stdio.h> #include <stdlib.h> #include <math.h> #include <errno.h> #include <netinet/in.h> #include <strings....

再谈select,iocp,epoll,kqueue及各种I/O复用机制  

首先,介绍几种常见的I/O模型及其区别,如下: blocking I/O nonblocking I/O I/O multiplexing (select and poll) signal driven I/O (SIGIO) asynchronous I/O (the POSIX aio_functions) ...

Linux下C高手成长过程----经典书籍推荐

首先先学学编辑器,vim, emacs什么的都行。  然后学make file文件,只要知道一点就行,这样就可以准备编程序了。  然后看看《C程序设计语言》K&R,这样呢,基本上就可以进行一般的编程了,顺便找本数据结构的书来看。  如果想学习UNIX/LINUX的编程,《Advanced Programing in Unix Envirement》绝对经典...

区分C语言中fgetc、getc、getchar、fgets、gets

int fgetc ( FILE *stream );  //从流stream中读一个字符。可以将标准输入stdin作为它的实参,这时候从标准输入读取一个字符。  int getc(FILE *stream);      //和fgetc等效,由fgetc通过宏实现。  int getchar ( void );    ...

C语言中静态变量和静态函数

1.  static 变量 静态变量的类型说明符是static。 静态变量当然是属于静态存储方式,但是属于静态存储方式的量不一定就是静态变量。 例如外部变量虽属于静态存储方式,但不一定是静态变量,必须由 static加以定义后才能成为静态外部变量,或称静态全局变量。 2. 静态局部变量 静态局部变量属于静态存储方式,它具有以下特点: (1)静态局部变量在函数内定义  ...

C语言中volatile关键字的作用

一.前言 1.编译器优化介绍: 由于内存访问速度远不及CPU处理速度,为提高机器整体性能,在硬件上引入硬件高速缓存Cache,加速对内存的访问。另外在现代CPU中指令的执行并不一定严格按照顺序执行,没有相关性的指令可以乱序执行,以充分利用CPU的指令流水线,提高执行速度。以上是硬件级别的优化。 再看软件一级的优化:一种是在编写代码时由程序员优化,另一种是由编译器进行优化。 编...