linux编程环境
摘要:Linux编程环境的学习一、vimvim编辑器基本上可以分为3种模式,分别是命令模式、插入模式和底行模式,下图所示为Vim各种模式相互转换的关系图。命令模式:控制屏幕光标的移动,进行文本的删除、复制等文字编辑工作(不使用[Del]键和[Backspace]键)以及进入插入模式,或者回到底行模式。插入模式:只有在插入模式下,才可以输入文字。按[Esc]键可回到命令行模式。很多Vim编辑器使用者希望一打开Vim就可以输入内容,但这是不能成功的,因为刚打开Vim编辑器时处于命令模式。底行模式:保存文件或退出Vim,同时也可以设置编辑环境和一些编译工作,如列出行号、寻找字符串等。下图演示了三种模式之间
阅读全文
posted @
2012-07-11 20:13
吃吃户
阅读(752)
推荐(1)
Linux RPC编程的几点体会(转)
摘要:转自:http://blog.chinaunix.net/space.php?uid=20644632&do=blog&id=2220585Linux下面的RPC模型是SUN RPC (ONC RPC),使用了XDR来编码/解码数据。gcc提供了一些标准数据类型的XDR filter(比如整型,浮点型,字符串等)。对于自定义数据类型,则需要自己编写XDR filter来处理。你可以使用rpcgen来帮你自动生成xdr filter,但是,该工具需要你提供一个 .x 文件。我在实际使用的过程中,遇到了一些问题,解决问题的过程中有了一些体会。(1) xdr_string 无法处理C
阅读全文
posted @
2011-12-16 15:55
吃吃户
阅读(3358)
推荐(0)
用libevent的定时器
摘要:1 #include <iostream> 2 using namespace std; 3 4 #include <event.h> 5 6 static char data[10] = "abc"; 7 struct event ev; 8 struct timeval tv; 9 void Fun(int fd, short n, void * a)10 {11 evtimer_del(&ev); 12 evtimer_add(&ev, &tv);13 cout << (char *)a << e
阅读全文
posted @
2011-12-13 21:59
吃吃户
阅读(2871)
推荐(0)
C时间处理相关
摘要:struct timeval {time_t tv_sec; // secondssuseconds_t tv_usec; // microseconds};time_t time(time_t *); // 获取当前时间为一个长整数char * ctime(const time_t *); // 将时间结构time_t转换为字符串char * asctime(const struct tm *); // 将tm结构转换为字符串struct tm * gmtime(const time_t *); // 将时间结构转换为tm结构 GMTstruct tm * localtime(const .
阅读全文
posted @
2011-12-11 11:40
吃吃户
阅读(209)
推荐(0)
链接静态库是有顺序的
摘要:这两天编译的时候总是出现莫名其妙的错误,都是链接的错误,但是我看了下源码,觉得应该包涵在库里面了啊,今天把库都合到一个文件夹之后,发现,如果采用ls自己的顺序去书写static链接的库的顺序还是会报错。采用原来的顺序后,发现可以正常编译了。。。真是纠结的蛋疼。。。最后把~目录下所有的头文件都拷贝到inc文件夹下,用到的所有的a文件都拷贝到lib文件夹下libsvc有两个,但是这两个是不一样的,所以一个叫libsvc1.a,另一个叫libsvc2.a最终makefile简化成libs=lib/libdbmuse.a lib/libdhashclient.a lib/libutil.a lib/l
阅读全文
posted @
2011-12-05 13:54
吃吃户
阅读(1501)
推荐(0)
daemon函数的步骤
摘要:1.fork 调用fork,终止父进程。如果进程是以shell命令方式从前台启动,当父进程终止时,shell就认为命令执行完了。这可以自动使子进程在后台运行。子进程继承了父进程的进程组号,但是组号和它的进程号不一样,所以它就不是进程组头,这是调用setsid所必需的。2.setsid setsid创建一个新的登录会话,该进程变成新会话的会话头和新的进程组组长,不再有控制终端。3.忽略SIGHUP信号并再次fork 在SVR4中,当没有控制终端的会话头进程打开终端设备时,该终端自动成为这个会话头的控制终端。但通过第二次调用fork,可以保证这次生成的子进程不再是一个会话的头,因此它不会获得...
阅读全文
posted @
2011-12-02 23:10
吃吃户
阅读(487)
推荐(0)
测试文件是否可读、存在等
摘要:1 #include <unistd.h> 2 #include <sys/stat.h> 3 #include <stdio.h> 4 5 bool IsFileRead(const char * file_name) 6 { 7 int ret = access(file_name, R_OK); 8 /* 9 W_OK可写 X_OK可执行 F_OK是否存在10 */11 if (ret == 0)12 return true;13 return false;14 }15 bool IsRegFile(const char * ...
阅读全文
posted @
2011-11-30 10:14
吃吃户
阅读(270)
推荐(0)
linux下生成.so文件和.a文件
摘要:test.h1 #ifndef _TEST_H_2 #define _TEST_H_3 4 void TestA();5 void TestB();6 7 #endiftest_a.cpp1 #include <stdio.h>2 #include "test.h"3 4 void TestA()5 {6 printf("TestA func\n");7 }test_b.cpp1 #include <stdio.h>2 #include "test.h"3 4 void TestB()5 {6 printf(&
阅读全文
posted @
2011-11-15 12:51
吃吃户
阅读(27605)
推荐(2)
RPC简单使用
摘要:test.x1 program TESTPROG {2 version TESTVERS {3 int Test(string) = 1;4 } = 1;5 } = 0x30000000;test_local.c 1 #include <stdio.h> 2 #include <stdlib.h> 3 4 #include "test.h" 5 6 #define HOST "localhost" 7 8 int test(char *); 9 10 CLIENT * handle;11 12 int main(int argc,
阅读全文
posted @
2011-11-13 15:56
吃吃户
阅读(951)
推荐(0)