feisky

云计算、虚拟化与Linux技术笔记
随笔 - 1009, 文章 - 1, 评论 - 304, 阅读 - 277万
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

随笔分类 -  C/C++

摘要:A few weeks agoLinus Torvalds answered some questionson slashdot. All his responses make good reading but one in particular caught my eye. Asked to describe his favourite kernel hack, Torvalds grumbles he rarely looks at code these days — unless it’s to sort out someone else’s mess. He then pauses t 阅读全文

posted @ 2013-02-04 13:36 feisky 阅读(544) 评论(0) 推荐(0) 编辑

摘要:sync,fsync,fdatasync,fflush之间的区别在 大多数的unix/linux对磁盘io的写操作都是通过缓存来完成的,基本的原理如下:当将数据写入文件时,内核通常先将该数据复制到其中一个缓冲区 中,如果该缓冲区尚未写满,则并不将其排入输出队列,而是等待其写满或者当内核需要重用该缓冲区以便存放其他磁盘块数据时,再将该缓冲排入输出队列,然后 待其到达队首时,才进行实际的I/O操作。 我们称之为延迟写,极大的减少了写磁盘的次数。但是在没写特殊的应用中我们需要实时的将应用层数据写入到磁盘上 特别是一些高可靠性要求的系统中 数据需要及时的写入磁盘 即便是瞬时系统故障 数据也可以安全恢复 阅读全文

posted @ 2013-01-14 21:19 feisky 阅读(1585) 评论(0) 推荐(0) 编辑

摘要:前不久在使用libcurl写多线程下载时候,出现莫名其妙的段错误。问题出现在使用libcurl开多线程从任务队列下载文件后,因为下载队列空,所有下载线程锁在pthread_mutex_lock。这时,程序空闲几秒后会因为出现Segmentation fault退出。反复看我的代码也没看出什么问题来,最后竟然在讲libcurl基础的地方找到了答案,真惭愧,基础很重要啊!原来libcurl在configure默认配置编译的情况下,它是使用alarm+siglongjmp实现域名解析超时。当多个线程都使用超时处理的时候,同时主线程中有sleep或是wait等操作。libcurl将会发信号打断这个wa 阅读全文

posted @ 2012-10-08 09:31 feisky 阅读(2167) 评论(0) 推荐(0) 编辑

摘要:先看看测试代码// cas.c#include <stdio.h>#include <pthread.h>#include <stdlib.h>static int count = 0;void *test_func(void *arg){ int i=0; for(i=0;i<100000;++i){ __sync_fetch_and_add(&count,1); } return NULL;}int main(int argc, const char *argv[]){ pthread_t ... 阅读全文

posted @ 2012-07-29 12:03 feisky 阅读(1557) 评论(0) 推荐(0) 编辑

摘要:非阻塞型同步 (Non-blocking Synchronization) 简介如何正确有效的保护共享数据是编写并行程序必须面临的一个难题,通常的手段就是同步。同步可分为阻塞型同步(Blocking Synchronization)和非阻塞型同步( Non-blocking Synchronization)。阻塞型同步是指当一个线程到达临界区时,因另外一个线程已经持有访问该共享数据的锁,从而不能获取锁资源而阻塞,直到另外一个线程释放锁。常见的同步原语有 mutex、semaphore 等。如果同步方案采用不当,就会造成死锁(deadlock),活锁(livelock)和优先级反转(priori 阅读全文

posted @ 2012-07-29 11:56 feisky 阅读(1525) 评论(0) 推荐(1) 编辑

摘要:realloc 用过很多次了。无非就是将已经存在的一块内存扩大。char* p = malloc(1024);char* q = realloc(p,2048);现在的问题是我们应该如何处理指针 p。 刚开始按照我最直观的理解,如果就是直接将 p = NULL;。 到最后只需要释放 q的空间就可以了。因为最近在做个封装。结果在做单元测试的时候发现。有时候我在 free(q); 的时候会出错。这样我就郁闷了。后来仔细一跟踪,发现 realloc 完以后 q 和 p 的指针地址是一样。不过有时候又不一样。仔细查了下资料。得到如下信息: 1.如果 当前连续内存块足够 realloc 的... 阅读全文

posted @ 2012-04-05 21:37 feisky 阅读(522) 评论(0) 推荐(0) 编辑

摘要:配置文件SConstruct:env=Environment(CC='gcc', CFLAGS=[], LIBS=[''], LIBPATH=['/usr/local/lib'], CPPPATH=['.','/usr/local/include'], CPPDEFINES=[]) env.Program('test',Glob('*.c'))多个程序的时候:多次调用env.Program('a','a.c')env=Environment(CC=&# 阅读全文

posted @ 2011-11-27 15:29 feisky 阅读(1173) 评论(0) 推荐(0) 编辑

摘要:设置编译选项:SConstruct中添加:env=Environment(CC='gcc', CFLAGS=['-g','-pg'], LINKFLAGS=['-pg'], LIBPATH=['/usr/local/lib','/lib64'], CPPPATH=['.','/usr/local/include','/usr/include'], CPPDEFINES=[])如是多进程程序: export GMON_OUT_PREFIX=x.out运行 阅读全文

posted @ 2011-11-27 15:27 feisky 阅读(761) 评论(0) 推荐(0) 编辑

摘要:一般我们在程序设计的时候,我们使用wait来获取子进程的退出状态,但是wait将会阻塞等到子进程结束。对于waitpid来说: pid_t waitpid(pid_t pid, int *statloc, int options);我们可以通过设置第3个参数options为WNOHANG来使waitpid为非阻塞,但这样的话,我们就需要不断的调用waitpid来探测子进程是否结束。 signal中有一个SIGCHLD,当一个进程终止或停止时,将SIGCHLD信号发送给其父进程。按照系统默认情况,这个信号是被忽略的。如果父进程希望被告知其子进程的这种状态的变化,则应该设置捕获这个信号。在信号处理 阅读全文

posted @ 2011-06-11 22:07 feisky 阅读(911) 评论(0) 推荐(0) 编辑

摘要:摘要:本文详细介绍了assert函数的基本用法及注意事项。作者:zieckey (zieckey@yahoo.com.cn) All Rights Reserved!assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序执行,原型定义:#include <assert.h>void assert( int expression );assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行。请看下面的程序清单badptr.c:#in 阅读全文

posted @ 2011-06-11 20:47 feisky 阅读(893) 评论(0) 推荐(0) 编辑

摘要:使用临时文件要考虑几个问题: 保证临时文件间的文件名不互助冲突。 保证临时文件中内容不被其他用户或者黑客偷看、删除和修改。 Linux中提供了mkstemp 和 tmpfile 函数来处理临时文件。 mkstemp函数 int mkstemp(char *template);mkstemp函数在系统中以唯一的文件名创建一个文件并打开,而且只有当前用户才能访问这个临时文件,并进行读、写操作。mkst... 阅读全文

posted @ 2011-06-11 17:33 feisky 阅读(3059) 评论(1) 推荐(0) 编辑

摘要:首先安装wine apt-get install wine wine会把~/.wine/driver_c 当做C盘来使用。 可以用Winecfg把常用的工作目录都虚拟成WINDOWS的盘符 安装Source Insight: wine InsightSetup.exe 会打开安装向导,按照向导安装即可。 安装完毕后,可以新建一个脚本来快速启动Source Insight:wine "c:\Prog... 阅读全文

posted @ 2011-05-31 09:03 feisky 阅读(7270) 评论(0) 推荐(2) 编辑

摘要:一、主设备号和此设备号主设备号表示设备对应的驱动程序;次设备号由内核使用,用于正确确定设备文件所指的设备。内核用dev_t类型(<linux/types.h>)来保存设备编号,dev_t是一个32位的数,12位表示主设备号,20为表示次设备号。在实际使用中,是通过<linux/kdev_t.h>中定义的宏来转换格式。 (dev_t)-->主设备号、次... 阅读全文

posted @ 2010-05-29 10:53 feisky 阅读(8469) 评论(0) 推荐(2) 编辑

摘要:硬件电路分析内核配置支持输入子系统及其键盘驱动查看/dev/input/eventX是什么类型的事件,cat /proc/bus/input/devices I: Bus=0019 Vendor=0001 Product=0001 Version=0100N: Name="gpio-keys"P: Phys=gpio-keys/input0S: Sysfs=/class/input/input0U... 阅读全文

posted @ 2010-05-26 10:58 feisky 阅读(2221) 评论(0) 推荐(0) 编辑

摘要:1.首先得让内核支持PPP,进入Linux 内核目录(kernel-2.6 或 以上内核版本),执行 #make menuconfig添加如下内核选项:Device Drivers ---> Network device support ---><*> PPP (point-to-point protocol) support[*] PPP multilink suppor... 阅读全文

posted @ 2010-05-25 15:20 feisky 阅读(1268) 评论(0) 推荐(0) 编辑

摘要:char * strtok ( char *string, const char *delimiters);Sequentially truncate string if delimiter is found. Ifstringis notNULL, the function scansstringfor the first occurrence of any character included... 阅读全文

posted @ 2010-05-25 09:13 feisky 阅读(2081) 评论(0) 推荐(0) 编辑

摘要:1 Eclipse的安装 到http://java.sun.com/j2se/1.5.0/download.jsp 下载JRE安装; 到http://eclipse.org下载Eclipse安装。(这儿可以下载Java版本的,也可以下载C/C++ 版本的) 2 对于下载的Java版本或着只下载Eclipse IDE的,需要安装CDT。 在Eclipse菜单help里面,安装CDT,网址为http:... 阅读全文

posted @ 2010-03-21 21:08 feisky 阅读(41975) 评论(0) 推荐(0) 编辑

摘要:DB 是 linux 系统上常用的调试工具,本文介绍了使用 GDB 调试多进程程序的几种方法,并对各种方法进行比较。 GDB 是 linux 系统上常用的 c/c++ 调试工具,功能十分强大。对于较为复杂的系统,比如多进程系统,如何使用 GDB 调试呢?考虑下面这个三进程系统: 进程 Proc2 是 Proc1 的子进程,Proc3 又是 Proc2 的子进程。如何使用 GDB 调试 proc... 阅读全文

posted @ 2010-03-11 20:33 feisky 阅读(825) 评论(0) 推荐(1) 编辑

摘要:GDB概述 1使用GDB GDB中运行UNIX的shell程序 在GDB中运行程序 2调试已运行的程序 两种方法: 3暂停 / 恢复程序运行 一、设置断点(BreakPoint) 二、设置观察点(WatchPoint) 三、设置捕捉点(CatchPoint) 四、维护停止点 五、停止条件维护 六、为停止点设定运行命令 七、断点菜单 八、恢复程序运行和单步调试 九、信号(Signals) 十、线程(... 阅读全文

posted @ 2010-03-11 20:31 feisky 阅读(2584) 评论(0) 推荐(1) 编辑

摘要:'GNU cflow' analyzes a collection of C source files and prints a graph charting control flow within the program. It can produce both direct and inverted flowgraphs for C sources, or optionally generat... 阅读全文

posted @ 2010-03-09 21:27 feisky 阅读(5005) 评论(0) 推荐(1) 编辑

无觅相关文章插件,快速提升流量
点击右上角即可分享
微信分享提示