![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux
木易云清
每天学习一点linux,每天学习享受生活,享受工作。
展开
-
epoll 水平触发和边缘触发的区别
EPOLLLT——水平触发EPOLLET——边缘触发epoll有EPOLLLT和EPOLLET两种触发模式,LT是默认的模式,ET是“高速”模式。LT模式下,只要这个fd还有数据可读,每次 epoll_wait都会返回它的事件,提醒用户程序去操作,而在ET(边缘触发)模式中,它只会提示一次,直到下次再有数据流入之前都不会再提示了,无 论fd中是否还有数据可读。所以在ET模式下,read转载 2015-02-09 10:29:07 · 784 阅读 · 0 评论 -
RPC远程调用
在顾客服务员模型中,进程之间的相互作用是由一个进程先向另一个进程发送一个报文请求服务,然后等待回答;服务进程接收一个请求,然后发送回答。这样一种交互作用很象通常意义的过程调用。但是在计算机网络系统中,这种调用可能在不同的机器上执行,因此称为远程过程调用(remote procedure call)。远程过程调用的基础是XDR协议。 11.1 XDR标准 11.1.1转载 2014-05-25 18:08:14 · 1831 阅读 · 0 评论 -
Linux环境下C使用的XML解析库:libxml2
Libxml是一个实现读、创建及操纵XML数据功能的C语言库。这个指南提供例子代码并给 出它基本功能的解释。在这个项目的主页上有Libxml及更多关于它可用的资料。包含有完整的API文档。这个指南并不能替代这些完整的文档,但是阐明功 能需要使用库来完成基本操作。 这个指南基于一个简单的XML应用,它使用我写的一篇文章生成,它包含有元数据和文章的主体。本指南中的例子代码示范如何做转载 2014-05-25 20:18:10 · 718 阅读 · 0 评论 -
怎么快速虚学习linux开源项目(有感)
1、打好基本功,linux下的基本库熟悉,还有linux cbi原创 2014-06-05 15:46:46 · 675 阅读 · 0 评论 -
Linux cgroup机制分析之框架分析
linux 新手du一: 前言前段时间,一直在写操作系统和研究Solaris kernel.从而对linux kernel关心甚少.不久前偶然收到富士通的面试,由于诸多原因推辞掉了这次机会.不过招聘要求给我留下了较深的印像.其中涉及到了cgroup机制.cgroup对我来说并不陌生,在LKML上看到过它的path.在2008 AKA大会上也有人对它做为专题分析.不过一直转载 2014-06-05 09:24:46 · 585 阅读 · 0 评论 -
Linux AIO机制
Linux的I/O机制经历了一下几个阶段的演进:1. 同步阻塞I/O: 用户进程进行I/O操作,一直阻塞到I/O操作完成为止。2. 同步非阻塞I/O: 用户程序可以通过设置文件描述符的属性O_NONBLOCK,I/O操作可以立即返回,但是并不保证I/O操作成功。3. 异步事件阻塞I/O: 用户进程可以对I/O事件进行阻塞,但是I/O操作并不阻塞。通过select/poll/epoll等转载 2014-05-22 16:20:49 · 571 阅读 · 0 评论 -
工作
工作时间紧,从windows程序员转为linux程序员有点吃力,但是学到了很多。原创 2014-06-05 09:29:15 · 469 阅读 · 0 评论 -
Linux下pthread_once()函数
仅执行一次的操作int pthread_once(pthread_once_t *once_control, void (*init_routine) (void))本函数使用初值为PTHREAD_ONCE_INIT的once_control变量保证init_routine()函数在本进程执行序列中仅执行一次。#include #include #include #i转载 2014-05-22 10:17:37 · 774 阅读 · 0 评论 -
qemu核心机制分析-协程coroutine
关于协程coroutine前面的文章已经介绍过了,本文总结对qemu中coroutine机制的分析,qemu 协程coroutine基于:setcontext函数族以及函数间跳转函数siglongjmp和sigsetjmp实现。使用setcontext函数族来实现用户态进程栈的切换,使用函数间跳转siglongjmp和sigsetjmp实现协程coroutine不退出以及多次进入,即使corout转载 2014-05-12 16:55:27 · 1927 阅读 · 2 评论 -
linux c学习感悟
虽然毕业两年了,但是对于linux c我还是新手,以前是搞windows原创 2014-05-26 14:46:45 · 689 阅读 · 0 评论 -
linux下添加链接与删除链接(ln命令的用法)
linux下添加链接与删除链接(ln命令的用法)添加链接使用ln命令用法:#ln --help用法:ln [选项]... 目标 [链接名]或:ln [选项]... 目标... 目录或:ln [选项]... --target-directory=目录 目标...创建连至指定的链接,并可选择性指定。如果没有指定,会在目前的目录中创建一个和名称一样的链接。当使用第转载 2014-06-10 14:33:17 · 2102 阅读 · 0 评论 -
Gtk+ 教程和资源集合
转于 http://118.112.185.72/read-gtk-tid-98.html 本贴以http://www.gtkforums.com/about988.html为蓝本整理并翻译。欢迎来到GTK+ 教程和资源这个页面收集了关于GTK+编程的一些资料(包括文档、教程和实例),并非所有的内容都是讲述GTK+的,但是,在这里的资料都是与GTK+相关的。注意转载 2014-09-11 15:01:04 · 2104 阅读 · 0 评论 -
修改Linux的默认编码
修改Linux的默认编码2009-10-28 10:17Windows的默认编码为GBK,Linux的默认编码为UTF-8。在Windows下编辑的中文,在Linux下显示为乱码。为了解决此问题,修改Linux的默认编码为GBK。方法如下:方法1:vi /etc/sysconfig/i18nLANG="zh_CN.GBK"SUPPORTED="z转载 2014-08-21 16:20:10 · 720 阅读 · 0 评论 -
eventfd
int eventfd(unsigned int initval, int flags);eventfd函数会创建一个 事件对象 (eventfd object), 用来实现,进程(线程)间 的 等待/通知(wait/notify) 机制. 内核会为这个对象维护一个64位的计数器(uint64_t)。并且使用第一个参数(initval)初始化这个计数器。调用这个函数就会返回一个新的文件转载 2014-06-22 23:54:23 · 6566 阅读 · 0 评论 -
GNU C 与ANSI C 相比,独特的9个地方
从人民邮电的《Linux设备驱动开发详解》上抄的华清远见的宋老师著,可惜咱没钱上他的课 百十来块钱的书 我还是从来不吝啬的可是 华清远见也不能出那么多书啊 本来想全买的,现在发现买的速度比不上他们出书的速度看了这一节感觉C语言的见识又大大增强发现了书中一处笔误,查资料时又发现了一些结构体对齐上别人的错误,^_^ 真有点飘飘然了这篇的东西只对GNU C转载 2014-06-20 17:21:16 · 514 阅读 · 0 评论 -
SO_REUSEADDR的作用
原贴地址:http://topic.csdn.net/u/20090103/16/a0414edb-b289-4c72-84da-39e155e8f4be.html如下演示程序,程序目的是:先准备好一个ServerSocket,监听端口8880,然后建一个ClientSocket(受限于业务需要,必须在ServerSocket准备好后再建Client),也必须绑定同一端转载 2014-06-20 10:11:03 · 911 阅读 · 0 评论 -
I/O函数recvmsg与sendmsg
说明:想对于之前的几个IO函数,recvmsg与sendmsg功能更为强大,当然用起来也更为复杂。#include "sys/socket.h" ssize_t recvmsg(int sockfd, struct msghdr * msg, int flags);ssize_t sendmsg(int sockfd, struct msgh转载 2014-06-20 11:06:53 · 806 阅读 · 0 评论 -
struct linger 用法
说明:xindeLinux下tcp连接断开的时候调用close()函数,有优雅断开和强制断开两种方式。那么如何设置断开连接的方式呢?是通过设置socket描述符一个linger结构体属性。linger结构体数据结构如下: #include struct linger { int l_onoff; int l_linger;};转载 2014-06-20 15:18:24 · 724 阅读 · 0 评论 -
IO多路复用之epoll总结
1、基本知识 epoll是在2.6内核中提出的,是之前的select和poll的增强版本。相对于select和poll来说,epoll更加灵活,没有描述符限制。epoll使用一个文件描述符管理多个描述符,将用户关系的文件描述符的事件存放到内核的一个事件表中,这样在用户空间和内核空间的copy只需一次。2、epoll接口 epoll操作过程需要三个接口,分别如下:转载 2014-06-12 14:23:28 · 486 阅读 · 0 评论 -
coroutine编程初探
今天在qemu源码最近在看virtio-blk的代码,发现qemu端最终通过创建coroutine提交aio以及对aio结果结果的获取和处理,使用coroutine是一种编程模式。coroutine可以看成是一种微线程,用户态进程在执行过程中可以在多个coroutine之间快速切换,可以实现在单进程中任务“并发”,这里并发是指宏观上的,主要是通过当任务在执行过程中,因为需要等待事件或者资源转载 2014-05-12 16:50:45 · 858 阅读 · 0 评论 -
pthread_cleanup_push()
线程终止时的清理不论是可预见的线程终止还是异常终止,都会存在资源释放的问题,在不考虑因运行出错而退出的前提下,如何保证线程终止时能顺利的释放掉自己所占用的资源,特别是锁资源,就是一个必须考虑解决的问题。最经常出现的情形是资源独占锁的使用:线程为了访问临界资源而为其加上锁,但在访问过程中被外界取消,如果线程处于响应取消状态,且采用异步方式响应,或者在打开独占锁以前的运行路径上存在取消转载 2014-05-12 15:48:48 · 979 阅读 · 0 评论 -
c语言两个感叹号的用法
最近在看sheepdog源码的时候看到很多两个感叹号的用法,很疑惑原创 2014-05-12 11:25:20 · 6175 阅读 · 1 评论 -
Linux的inode的理解
文件名 -> inode -> device block 转自:http://www.ruanyifeng.com/blog/2011/12/inode.htmlhttp://blog.s135.com/post/295/ http://hi.baidu.com/leejun_2005/blog/item/d9aa13a53b3af6e99152ee7e.html转载 2014-03-07 10:43:50 · 995 阅读 · 0 评论 -
make: warning: Clock skew detected. Your build may be incomplete
今天编译的时候遇到这个警告,网上查了一下,说的是文件的修改时间比系统时间造成的。可以修改系统时间,我是直接touch一下文件就行了。一般这个警告发生在不同平台上,比如我是在windows下写程序,然后在linux虚拟机上编译,这种情况就容易出现。原创 2014-03-03 16:04:05 · 673 阅读 · 0 评论 -
关于学习Linux的经典书籍 (深入理解Linux内核、Linux设备驱动程序等)
成为一名精通 Linux 程序设计的高级程序员一直是不少朋友孜孜以求的目标。根据中华英才网统计数据,北京地区 Linux 程序员月薪平均为 Windows 程序员的 1.8 倍、Java 程序员的 2.6 倍, Linux 程序员年终奖金平均为 Windows 程序员的 2.9 倍。同时数据显示,随着工作经验的增长, Linux 程序员与 Windows 程序员的收入差距还有扩大的趋势。Denis转载 2014-02-27 14:46:36 · 635 阅读 · 0 评论 -
open和fopen的区别
open和fopen的区别:1.缓冲文件系统缓冲文件系统的特点是:在内存开辟一个“缓冲区”,为程序中的每一个文件使用,当执行读文件的操作时,从磁盘文件将数据先读入内存“缓冲区”, 装满后再从内存“缓冲区”依此读入接收的变量。执行写文件的操作时,先将数据写入内存“缓冲区”,待内存“缓冲区”装满后再写入文件。由此可以看出,内存 “缓冲区”的大小,影响着实际操作外存的次数,内存“缓冲区”转载 2014-02-27 11:11:29 · 544 阅读 · 0 评论 -
losetup命令和loop设备的使用
1. loop设备介绍 loop 设备是一种伪设备(pseudo-device),或者也可以说是仿真设备。它能使我们像块设备一样访问一个文件。 在使用之前,一个loop设备必须要和一个文件进行连接。这种结合方式给用户提供了一个替代块特殊文件的接口。因此,如果这个文件包含有一个完整的文件系统,那么这个文件就可以像一个磁盘设备一样被 mount 起来。 上面说的文件格式,我们经常见到转载 2014-02-24 11:11:57 · 2499 阅读 · 0 评论 -
linux lost+found文件是什么文件夹?
这个目录是使用标准的ext2/ext3档案系统格式才会产生的一个目录,目的在于当档案系统发生错误时, 将一些遗失的片段放置到这个目录下。这个目录通常会在分割槽的最顶层存在, 例如你加装一颗硬盘于/disk中,那在这个系统下就会自动产生一个这样的目录『/disk/lost+found lost+found这个目录一般情况下是空的,当系统非法关机后,如果你丢失了一些文件,在这里能找回来用来转载 2014-02-24 13:39:57 · 24274 阅读 · 0 评论 -
我使用过的Linux命令之hexdump - ”十六“进制查看器
我使用过的Linux命令之hexdump - ”十六“进制查看器本文链接:http://codingstandards.iteye.com/blog/805778 (转载请注明出处) 用途说明hexdump命令一般用来查看”二进制“文件的十六进制编码,但实际上它的用途不止如此,手册页上的说法是“ascii, decimal, hexadecimal, octal转载 2014-02-24 11:23:28 · 817 阅读 · 0 评论 -
/dev/zero和/dev/null的区别
使用/dev/null 把/dev/null看作"黑洞". 它非常等价于一个只写文件. 所有写入它的内容都会永远丢失. 而尝试从它那儿读取内容则什么也读不到. 然而, /dev/null对命令行和脚本都非常的有用.禁止标准输出. 1 cat $filename >/dev/null 2 # 文件内容丢失,而不会输出到标准输出. 禁止标准错误 (来自例子 1转载 2014-02-24 10:26:59 · 598 阅读 · 0 评论 -
Linux压缩打包命令使用方法
tar命令[root@linux ~]# tar [-cxtzjvfpPN] 文件与目录 ....参数:-c :建立一个压缩文件的参数指令(create 的意思);-x :解开一个压缩文件的参数指令!-t :查看 tarfile 里面的文件!特别注意,在参数的下达中, c/x/t 仅能存在一个!不可同时存在!因为不可能同时压缩与解压缩。-z :是否同转载 2014-03-07 11:20:54 · 496 阅读 · 0 评论 -
sudo 命令详解
##################################################################################################################################################sudo 命令功能这个命令既可以让普通用户拥有一部分超级用户权限,又不需要知道root用户的密码,s转载 2014-03-10 09:55:37 · 2443 阅读 · 0 评论 -
C 语言restrict 关键字
我们希望某个对象(内存空间)不被修改的通常做法是什么?声明该空间的const类型,但是这样真的可以吗?是不是的,由于const空间对象的指针是可以付给一个非const值指针的。所以这仍然无法不让该空间被修改。const int a=10;int * b=&a;虽然,编译器会报警告“ 警告:初始化丢弃了指针目标类型的限定”,这个意思是,b失去了对目标对象的const的限定。但转载 2014-05-12 14:32:30 · 888 阅读 · 0 评论 -
__init和__exit
在linux内核中,所有标识为__init的函数在连接的时候都存放在.init.text这个区段内,此外,所有的__init函数在区段.initcall.init中还保存了一份函数指针,在初始化时内核会通过这些函数指针调用这些__init函数,并在初始化完成后释放init区段(包括.init.text,.initcall.init等),这样可以将该函数占用的内存释放出来。转载 2014-05-11 17:45:30 · 1005 阅读 · 0 评论 -
linux命令:modprobe
Linux命令:modprobe 功能说明:自动处理可载入模块。 语 法:modprobe [-acdlrtvV][--help][模块文件][符号名称 = 符号值] 补充说明:modprobe可载入指定的个别模块,或是载入一组相依的模块。modprobe会根据depmod所产生的相依关系,决定要载入哪些模块。若在载入过程中发生错误,在modprobe会卸载整组的模块转载 2014-05-04 17:11:01 · 512 阅读 · 0 评论 -
linux tee 命令详解
linux tee 命令详解功能说明:读取标准输入的数据,并将其内容输出成文件。语 法:tee [-ai][--help][--version][文件...]补充说明:tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件。参 数: -a或--append 附加到既有文件的后面,而非覆盖它. -i-i或--ignore-in转载 2014-05-03 14:49:34 · 882 阅读 · 0 评论 -
Make Menuconfig详解 (配置内核选择)
2013-03-04 21:27 7137人阅读 评论(0) 收藏 举报目录(?)[+]Make Menuconfig简介make menuconfig 图形化的内核配置make mrproper -----删除不必要的文件和目录. #make config(基于文本的最为传统的配置界面,不推荐使用) #make menuconfig(基于文本选单的转载 2014-05-03 11:54:49 · 632 阅读 · 0 评论 -
如何判断linux DHCP服务器状态/关闭/开启命令
1. 查看是否设置开机启动chkconfig --list | grep dhcpd2. 查看端口是否打开netstat -anulp | grep :67 3.查看服务状态/etc/init.d/dhcpd status【查看是否运行dhcp服务: ps aux | grep dhcp |grep -v grep 】 4:关闭 dhcpd /etc/init.d/dhcp转载 2014-04-01 16:32:08 · 21647 阅读 · 0 评论 -
cannot open shared object file: No such file or directory解决
我是要解决加载log4cplus库时遇到这个问题,仿照类似方法解决问题:cannot open shared object file: No such file or directory解决 ./move_db: error while loading shared libraries: libmysqlclient.so.15: cannot open转载 2014-03-10 14:50:27 · 3257 阅读 · 0 评论 -
Linux中profile
Linux /etc/profile文件的改变会涉及到系统的环境,也就是有关Linux环境变量的东西,学习Linux要了解Linux profile文件的相关原理,这里对则以文件进行具体分析。这里修改会对所有用户起作用。 1、Linux是一个多用户的操作系统。每个用户登录系统后,都会有一个专用的运行环境。通常每个用户默认的环境都是相同的,这个默认环境实际上就是一组环境变量的定义。用户可以转载 2014-03-10 13:19:45 · 522 阅读 · 0 评论