
Linux
文章平均质量分 53
orzlzro
这个作者很懒,什么都没留下…
展开
-
Linux shell: ls命令详解
ls 命令可以说是linux下最常用的命令之一。-a 列出目录下的所有文件,包括以 . 开头的隐含文件。-b 把文件名中不可输出的字符用反斜杠加字符编号(就象在C语言里一样)的形式列出。-c 输出文件的 i 节点的修改时间,并以此排序。-d 将目录象文件一样显示,而不是显示其下的文件。-e 输出时间的全部信息,而不是输出简略信息。-f -U 对输出的文件不排序。-g 无用。-i 输出文件的 i 节点的索引信息。-k 以 k 字节的形式表示文件的大小。-l 列出文件的详细信息。-m 横向输出文件名,并以“,”转载 2011-05-19 15:20:00 · 50862 阅读 · 0 评论 -
APUE-- 线程编程
<br />用gcc编译时,要加上 -lphread 选项。原创 2011-04-23 17:23:00 · 655 阅读 · 0 评论 -
宏定义中使用do{}while(0)的好处
<br />使用do{….}while(0) 把它包裹起来,成为一个独立的语法单元,<br />从而不会与上下文发生混淆。同时因为绝大多数的编译器都能够识别do{…}while(0)这种无<br />用的循环并进行优化,所以使用这种方法也不会导致程序的性能降低<br />在C++中,有三种类型的循环语句:for, while, 和do...while, 但是在一般应用中作循环时, 我们可能用for和while要多一些,do...while相对不受重视。<br /> 但是,最近在读我们项目的代码时,却发转载 2011-04-27 11:05:00 · 541 阅读 · 0 评论 -
Linux进程间通信(IPC)之一——管道
<br /> 1 管道(Pipe)<br /> 管道是UNIX系统IPC的最古老的形式,并且所有的Unix系统都提供这种通信机制,当然也包括Linux。这样利用管道进行IPC管道具有如下限制:<br />1、历史原因造成管道是半双工的,数据只能单向流动。如果想双向通信,必须要创建两个管道。<br />2、管道通信双方必须有亲缘关系的进程之间(父子进程或者兄弟进程之间)。2 管道的创建<br /> <br />#include <unistd.h>int pipe(int pipefd[2]);转载 2011-04-29 21:23:00 · 731 阅读 · 0 评论 -
Linux进程间通信(IPC)之二——命名管道(FIFO)
<br /> 1 命名管道(FIFO)<br /> 经过前文《Linux进程间通信(IPC)之一——管道》介绍管道,但是管道应用的一个重大缺陷就是没有名字,因此只能用于亲缘进程之间的通信。后来从管道为基础提出命名管道(named pipe,FIFO)的概念,该限制得到了克服。FIFO不同于管道之处在于它提供一个路径名与之关联,以FIFO的文件形式存在于文件系统中。这样,即使与FIFO的创建进程不存在亲缘关系的进程,只要可以访问该路径,就能够彼此通过FIFO相互通信(能够访问该路径的进程以及FIFO转载 2011-04-29 21:19:00 · 906 阅读 · 0 评论 -
Larbin 配置
ubuntu下1. 需要安装makedepend sudo apt-get install xutils-dev2. 把adns文件夹下internal.h文件569-571 注释掉3. 把所有#include 替换为#include 并且加上using namespace std; 还有一个简单的方法,就是从/usr/include/c++里面copy一份iostream到larbin的src文件夹下面。然后修改为iostream.h,并且在里面加上一句话 using namesp原创 2011-05-01 10:46:00 · 905 阅读 · 0 评论 -
openduckbill 异常
今天使用了openduckbill由于openduckbill最近没有更新,而pyinotify更新了,所以导致openduckbill出现异常 AttributeError: type object 'EventsCodes' has no attribute 'IN_CLOSE_WRITE'解决办法,打入以下patchdiff -ruN openduckbi原创 2012-01-05 21:29:02 · 1587 阅读 · 0 评论 -
GCC 编译出错 /usr/bin/ld: cannot find -lc
先用locate 找到 libc.so的位置。然后把libc.so拷贝到/usr/local/lib目录中原创 2012-01-02 14:00:06 · 7550 阅读 · 3 评论 -
similar to inotify on Windows
If you're using .net, use FileSystemWatcher. More info here: http://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.aspxIf you're using C, use FindFirstChangeNotification, FindNextCha原创 2012-01-05 21:35:29 · 4748 阅读 · 0 评论 -
Linux守护进程的编程实现
Linux 守护进程的编程方法 守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程是一种很有用的进程。Linux的大多数服务器就是用守护进程实现的。比如,Internet服务器inetd,Web服务器httpd等。同时,守护进程完成许多系统任务。比如,作业规划进程crond,打印进程lpd等。 守护进程的编程本转载 2012-03-26 15:16:45 · 585 阅读 · 0 评论 -
Memcached内部协议解析(ascii_prot)
Memcached的客户端和服务器之间通过TCP连接进行通信。(UDP方式也是可以的,详细信息见本文最后的"UDP protocol"解析)。运行中的memcached服务器监听在一些(可配置的)端口上;客户端通过连接到该端口,可以向服务器发送命令,读取应答,最后在关闭连接。 Memcached服务器不必发送任何命令来结束会话,这个工作仅仅由客户端来执行,当它不再需要该连接的时候。注意转载 2012-05-03 16:22:54 · 1601 阅读 · 0 评论 -
Memecached 线程模型
1. main函数中调用thread_init(),初始化setting.num_threads个worker线程以及一个主线程dispatcher_thread。每个worker线程用pipe创建一个管道,并注册libevent事件,当管道的读端可以读时,就调用thread_libevent_process()函数。thread_libevent_process()做的事情等下再说。原创 2012-05-03 19:29:05 · 1089 阅读 · 0 评论 -
thttpd 安装
1. 如果编译出现getline的错误,就把htpasswd.c中两处getline替换为my_getline2. groupadd www '添加一个组wwwuseradd -g www -d /home/www/ -s /bin/bash thttpd '添加一个用户thttpd3. ./configuremakesudo make install4. 写一个配置文件vim原创 2012-05-15 13:28:52 · 1371 阅读 · 0 评论 -
Autotools Tutorial
http://www.developingprogrammers.com/index.php/2006/01/05/autotools-tutorial/Autotools are the set of GNU tools that configure their source packages for a particular computer system. If you have转载 2012-05-16 20:23:27 · 818 阅读 · 0 评论 -
利用memcached构建高性能的Web应用程序
面临的问题对于高并发高访问的Web应用程序来说,数据库存取瓶颈一直是个令人头疼的问题。特别当你的程序架构还是建立在单数据库模式,而一个数据池连接数峰值已经达到500的时候,那你的程序运行离崩溃的边缘也不远了。很多小网站的开发人员一开始都将注意力放在了产品需求设计上,缺忽视了程序整体性能,可扩展性等方面的考虑,结果眼看着访问量一天天网上爬,可突然发现有一天网站因为访问量过大而崩溃了,到时候哭转载 2012-06-12 12:49:52 · 982 阅读 · 0 评论 -
PHP & memcached
肖理达 (KrazyNio AT hotmail.com), 2006.04. 06, 转载请注明出处一、memcached 简介在很多场合,我们都会听到 memcached 这个名字,但很多同学只是听过,并没有用过或实际了解过,只知道它是一个很不错的东东。这里简单介绍一下,memcached 是高效、快速的分布式内存对象缓存系统,主要用于加速 WEB 动态应用程序。二、memcach转载 2012-06-12 12:47:55 · 595 阅读 · 0 评论 -
linux内核——list_for_each_entry
在Linux内核源码中,经常要对链表进行操作,其中一个很重要的宏是list_for_each_entry:意思大体如下:假设只有两个结点,则第一个member代表head,list_for_each_entry的作用就是循环遍历每一个pos中的member子项。宏list_for_each_entry: /**401 * list_for_each_entry - iterate over list of given type402 * @pos: the type转载 2011-04-23 11:25:00 · 2024 阅读 · 0 评论 -
linux内核——Learning about the linux process 进程的遍历
Process DescriptorsEach process has process descriptors associated with it. These hold the information used to keep track of a process in memory. Among the various pieces of information stored about a process are its PID, state, parent process, children,转载 2011-04-23 11:39:00 · 2101 阅读 · 0 评论 -
linux内核——创建自己的/proc文件——processinfo
利用proc_mkdir()创建一个mydir,再利用create_proc_read_entry()函数创建一个processinfo文件。我们从模块里面获取的信息都将写入到processinfo文件中。#include#include#include#include#include#include#include#include#define tasklist_lock_address 0xc04f1980static struct proc_dir_entry *t原创 2011-04-23 11:20:00 · 14154 阅读 · 0 评论 -
vim
1.vim跳转到指定行的方法: 1. n+gg 跳转到第n行 2.先输入冒号,然后n,然后enter,跳转到第n行 3. gg跳转到第1行 4. shift+gg跳转到最后一行2. 简单替换表达式替换命令可以在全文中用一个单词替换另一个单词::%s/four/4/g“%” 范围前缀表示在所有行中执行替换。最后的 “g” 标记表示替换行中的所有匹配点。如果仅仅对当前行进行操作,那么只要去掉%即可 如果你有一个象 “thirtyfour” 这样的单词,上面的命令会出错。这种情原创 2011-05-19 14:51:00 · 1575 阅读 · 0 评论 -
Linux shell: trivial
切换到之前用过的目录 cd -原创 2011-05-19 15:50:00 · 857 阅读 · 0 评论 -
Linux shell: 单引号和双引号
单引号和双引号都能关闭shell对特殊字符的处理。不同的是,双引号没有单引号严格,单引号关闭所有有特殊作用的字符,而双引号只要求shell忽略大多数特殊字符。具体说,双引号里面:$, ``, / 这三个字符是不能被忽略的。就是这三个字符在双引号里面仍然具有特殊意义。>>echo "my home directory is $HOME"my home directory is /home/xxx>>echo "my home directoy is `pwd`"my home directory is /ho原创 2011-05-20 15:43:00 · 828 阅读 · 0 评论 -
Linux shell: 文件查找命令find,xargs详述
总结:zhy2111314来自:LinuxSir.Org整理:北南南北摘要: 本文是find 命令的详细说明,可贵的是针对参数举了很多的实例,大量的例证,让初学者更为容易理解;本文是zhyfly兄贴在论坛中;我对本文进行了再次整理,为方便大家阅读;目录版权声明前言:关于find命令一、find 命令格式1、find命令的一般形式为;2、find命令的参数;3、find命令选项;4、使用exec或ok来执行shell命令;二、find命令的例子;1、查找当前转载 2011-05-24 16:10:00 · 12917 阅读 · 0 评论 -
Linux shell: xargs
xargs reads items from the standard input, delimited by blanks (which can be protected with double or single quotes or a backslash) or newlines, and executes the command (default is /bin/echo) one or more times with any initial-arguments followed by items原创 2011-05-24 16:34:00 · 1862 阅读 · 0 评论 -
Linux shell: trivial
1.mkdir -p tmp/a/b/c 创建一个目录树2.不要移动存档,使用-C选项指定要解压到的目录 tar xvf -C tmp/a/b/c newarc.tar.gz3.将命令与控制操作符组合使用 组合操作符有&& && 仅当第一个命令执行成功,第二个才执行 ~ $ cd tmp/a/b/c && tar xvf ~/archive.ta类似地,|| 控制操作符分隔两个命令,并且仅当第一个命令返回非零退出状态时才运行第二个命令。换句话说,如果第一个命令成功,则第二个命令不会运行。如果第一个原创 2011-05-24 12:13:00 · 750 阅读 · 0 评论 -
跟我一起写 Makefile
<br />Makefile学习教程: 跟我一起写 Makefile0 Makefile概述0.1 关于程序的编译和链接1 Makefile 介绍1.1 Makefile的规则1.2 一个示例1.3 make是如何工作的1.4 makefile中使用变量1.5 让make自动推导1.6 另类风格的makefile1.7 清空目标文件的规则2 Makefile 总述2.1 Makefile里有什么?2.2Makefile的文件名2.3 引用其它的Makefile2.4 环境变量 MAKEFILES2.5 ma转载 2011-05-24 20:38:00 · 472 阅读 · 0 评论 -
用GDB调试程序
<br /><br />用GDB调试程序<br />GDB概述<br />————<br />GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。所谓“寸有所长,尺有所短”就是这个道理。<br />一般来说,GDB主要帮忙你完成下面四个方面的功能:<br /> 1、启动你的程序,可以按照你的自定义的要求随心所欲的运行程序转载 2011-05-30 09:21:00 · 526 阅读 · 0 评论 -
Linux shell: Sed - An Introduction and Tutorial by Bruce Barnett
<br /><br />Thanks for making this the number #1 page in Google on 'sed'! Also see my Unix Page<br />Last update: Tue Mar 8 07:14:03 EST 2011, Check out my new Sed Reference Chart and My blog post about sed and /t<br />I moved the credits to the end to mak转载 2011-05-30 14:17:00 · 1642 阅读 · 0 评论 -
GDB命令一览
<br />list 1,100 列出1到100行源码<br /> <br />break linenum ( if condition)<br />break function_name (if condition)<br />continue 从断电处继续执行<br />next 单步执行,不进入<br />step 单步执行,进入<br />info break<br />delete breakpoint num 删除breakpoint 编号是num的断点<br />delete b原创 2011-05-30 14:05:00 · 632 阅读 · 0 评论 -
G++ 编译使用动态链接库和静态链接库
<br />用G++ 编译时使用动态链接库和静态链接库的方法基本同GCC<br /> <br />但是实验中,我发现G++好像必须要求有函数原型的声明。<br />比如,在一个库libhello.so中有个函数 void hello(char *), 在 test.cpp中想要使用hello,如果是GCC,不需要在test.c文件中声明 extern void hello(char *)。 但G++需要。<br /> <br />另外,如果libhello.so是使用c语言编译器编译生成的,那么应该使用ex原创 2011-06-01 21:45:00 · 3516 阅读 · 1 评论 -
GCC 参数
-D macro 或者 -Dmacro 相当与 在代码中添加#define macro (这里的macro可以是任何字符串,-D才是选项,而不是-Dmacro)-D macro=defn 相当与在代码中添加 #define macro=defn-Umacro 相当于C语言中的#undef macro -Idir 在你是用#include"file"的时候,gcc/g++会先在当前目录查找你所制定的头文件,如 果没有找到,他回到缺省的头文件目录找,如果使用-I制定了目录,他会先在你所制定的目录查找,然后原创 2011-06-01 16:52:00 · 5904 阅读 · 1 评论 -
linux gcc 编译时头文件和库文件搜索路径
<br /><br /><br />一、头文件<br /> <br />gcc 在编译时寻找所需要的头文件 :<br /> <br />※搜寻会从-I开始<br /> <br />※然后找gcc的环境变量 C_INCLUDE_PATH,CPLUS_INCLUDE_PATH,OBJC_INCLUDE_PATH<br /> <br />※再找内定目录<br />/usr/include <br />/usr/local/include<br />/usr/lib/gcc-lib/i386-linux/2转载 2011-06-01 21:48:00 · 775 阅读 · 0 评论 -
用GCC编译C++文件
<br />用gcc编译c++文件:<br />gcc -o test test.cpp -lstdc++<br /> <br />-lstdc++ 大概就是使用stdc++这个库原创 2011-06-01 20:49:00 · 1573 阅读 · 0 评论 -
GCC 编译使用动态链接库和静态链接库
1. 创建动态链接库#includevoid hello(){ printf("hello world/n");} 用命令gcc -shared hello.c -o libhello.so编译为动态库。可以看到,当前目录下多了一个文件libhello.so。2. 再编辑一个测试文件test.c,内容如下#includeint main(){ printf("call hello()"); hello();} 编译 gcc test.c -lhello-l 选项告诉原创 2011-06-01 20:44:00 · 45540 阅读 · 3 评论 -
hadoop eclipse 插件
弄了好久。虽然现在已经出了hadoop 1.0.3,但是没有对应的eclipse插件。好像还要自己编译。所以我还是用hadoop 0.20.2吧。环境:ubuntu 10.10hadoop 0.20.2eclipse helios j2ee伪分布模式配置:1. 先解压hadoop 0.20.2,修改 conf/hadoop-env.sh,把JAVA_HOME指向原创 2012-07-03 19:39:40 · 935 阅读 · 0 评论