misc
文章平均质量分 70
shuimuyq
这个作者很懒,什么都没留下…
展开
-
指针之char** 与 char[][]的区别
char ** 和 char *[]是等价的 char **x / char *x[] , 典型的例子是main函数的第二个参数可以写成char **argv, 也可以写成char *argv[] 表示x是一个存储指针的数组,这个数组每个元素都是指针,在32系统上一个指针长度为4字节 那么x[0] 和 x[1]之间相差4个字节 x数组内存分布如下 x[0], x[1], x[2], x[原创 2015-11-12 11:32:19 · 496 阅读 · 0 评论 -
修改内核代码-打补丁-checkpatch.pl
我们下载一份内核源码,修改了一些代码,需要制作补丁,用diff命令 比如现在有两份内核源码 kernel-old, kernel-new 打补丁,命令为 diff -ruN kernel-old kernel-new > diff.patch 可以通过Kompare,或者直接用gedit打开查看修改的代码 接着要查看我们修改的代码是否符合内核编码规范 就需要用到原创 2015-11-25 15:30:57 · 4884 阅读 · 0 评论 -
应用程序运行时的虚拟内存布局 - 进程 - 线程
每一个进程都是类似上图的内存分布 当进程fork一个子进程的时候, 子进程拷贝父进程当前的内存空间, 包括环境变量, 栈空间, 堆空间, 代码段, 数据段等等 所以在子进程调用exec类函数之前, 所有都是和父进程一样的 所有线程共享所属进程的环境变量和栈空间原创 2016-04-08 16:47:16 · 463 阅读 · 0 评论 -
My Biggest Regret As A Programmer
A little over 20 years ago I was at a crossroads. My second company was petering out when our 5 years of building Deltagraph for the publisher ended (they wanted to move into the nascent internet spac转载 2016-04-15 16:16:40 · 523 阅读 · 0 评论 -
生产者-消费者-信号量-共享内存-循环队列
代码转自别处,稍有修改,主要是宏定义,我觉得不够直观的地方给改了,逻辑没变 用信号量来控制队列 #include #include #include #include #include #include #include #define转载 2016-04-20 14:48:23 · 1358 阅读 · 0 评论 -
这只猩猩很难控制 - Two star programming
Two star programming 2013-01-08 • C, Torvalds, Algorithms • 46 Comments A few weeks ago Linus Torvalds answered some questions on slashdot. All his responses make good reading but one in par转载 2016-03-23 16:42:23 · 627 阅读 · 0 评论 -
使用gprof 或 valgrind查看函数调用频率及程序性能瓶颈调试
利用 gprof2dot 和graphviz 图形化定位linux c/c++系统性能瓶颈 1 下载 http://code.google.com/p/jrfonseca/wiki/Gprof2Dot 下载gprof2dot.py http://www.graphviz.org/Download_source.php 下载graphviz-2.18.tar.gz原创 2016-01-15 14:15:09 · 1496 阅读 · 0 评论 -
内核文件打开读写操作代码
#include #include #include #include #include #include MODULE_LICENSE("Dual BSD/GPL"); static int doreadfile(void) { struct file *filp; mm_segment_t fs; loff_t pos = 0; struct inode *inode;原创 2016-01-11 16:22:12 · 367 阅读 · 0 评论 -
C简短代码集合
自己写的,或者看到别人写的,有趣的简短代码集合 检测大小端 #include int main(int argc, char *argv[]) { return printf("%s Endian\n", *(short *)"\x12\x34" == 0x1234 ? "Big" : "Little"); } 一个单链表,不知道长度,写一个函数快速找到中间节点位原创 2015-12-30 16:18:13 · 430 阅读 · 0 评论 -
线程池的实现(c语言)
/** threadpool.h */ #include struct job { void *(*callback_function)(void *arg); //线程回调函数 void *arg; //回调函数参数 struct job *next; }; struct threadpool; /* * threadpool_init * @thread_num:转载 2016-01-15 16:40:50 · 793 阅读 · 0 评论 -
命令 与 bash shell脚本
有些脚本也是来自网络,这里就不一一注明了 1: 编码转换脚本 首先可以用file命令查看当前乱码文本的编码,再执行脚本转换 #!/bin/bash if [ "$#" != "2" ]; then echo "Usage: `basename $0` dir filter" exit fi dir=$1 filter=$2 echo $1 for file in `fi原创 2015-12-30 16:06:03 · 284 阅读 · 0 评论