Windows和Linux动态库

摘要:动态链接库技术实现和设计程序常用的技术,在Windows和Linux系统中都有动态库的概念,采用动态库可以有效的减少程序大小,节省空间,提高效率,增加程序的可扩展性,便于模块化管理。但不同操作系统的动态库由于格式 不同,在需要不同操作系统调用时需要进行动态库程序移植。本文分析和比较了两种操作系统动态库技术,并给出了将Visual C++编制的动态库移植到Linux上的方法和经验。

  1、引言

  动态库(… 更多... “Windows和Linux动态库”

边缘触发(Edge Trigger)和条件触发(Level Trigger)

以下内容摘自网络:

 

      边缘触发是指每当状态变化时发生一个io事件,条件触发是只要满足条件就发 
生一个io事件。举个读socket的例子,假定经过长时间的沉默后,现在来了100个字 
节,这时无论边缘触发和条件触发都会产生一个read ready notification通知应用程 
序可读。应用程序读了50个字节,然后重新调用api等待io事件。这时条件触发的api会 
因为还有50个字节可读从而立即返回用户一个rea
更多... “边缘触发(Edge Trigger)和条件触发(Level Trigger)”

linux效率优于select的epoll模型

转载自:

http://www.cnblogs.com/OnlyXP/archive/2007/08/10/851222.html

 

epoll精髓

在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。
相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用… 更多... “linux效率优于select的epoll模型”

linux安装man page

好兴奋啊,今天终于可以用man来查看函数了,这个问题已经困扰了我好久好久了,花了不少功夫,为了解决这个问题,还特意加了linux 开发QQ群,结果也没有解决这个问题。

 

那么怎么来安装呢?其实非常简单(其实好多问题,就是有那么一心半点的技巧或者信息不知道,知道了,做起来非常简单,也许几分钟就搞定,但是可能之前花了几百个小时)。

 

先下载man page,这里提供一个我使用的连接:

http://www.kern更多... “linux安装man page”

配置vim文本颜色

因为之前一直在windows下面用vc+vc 助手开发,所以早就习惯了那里的语法加亮和自动补齐等,所以在vim开发有点不适应,因此想把开发环境稍作改动,让它跟vc接近些。

 

在我们讨论下面的内容之前请确保你的linux上已经安装好vim和相应的插件。如果没有安装请参看我的另外一遍文章:

安装linux开发环境(vim + ctags + taglist + cscope + cppcomplete + global )

 

让后你发… 更多... “配置vim文本颜色”

GDB调试器的基本用法

为了让我们的程序能被GDB调试,在编译的时候需要加上编译选项 -g 例如:

gcc -c -g main.c -o main.o

 

1. 启动GDB:

gdb main

( 该文中所有的命令均在linux的终端上实验通过。)

执行上面的命令要求当前的目录文main程序所在的目录,也可以不在main所在的目录,那样就需要指定main的路径,用绝对路径和相对路径都可以。

 

2. 列出代码:

l (这是小写的L)

或者是list

调试代码时,… 更多... “GDB调试器的基本用法”

c和c++中使用结构体的一点区别

从学校毕业以后,开发东西几乎全部是c++,今天在linux用c编程,发现关于结构体在定义和使用的上的一点区别。至于结构体在c++有类的特性,这里不做赘述,感兴趣的朋友可以自己查看c++ primer的相关章节。

 

以前在c++中定义和使用结构体如下:

 

// definition

typedef struct Student_t

{

  int num;

  char name[128];

}Student, *PStudent;

 

//… 更多... “c和c++中使用结构体的一点区别”

windows vs linux 编程之区别汇编

本人是从windows转到linux的。因此学习linux编程时候,每学习一种思想或者概念都要跟windows对应的东西相比较,这样便于理解和记忆,也不至于搞混了。

 

下面将陆续列出本人涉及到一些,随着学习的深入和工作经验的加深,下面的内容将逐渐扩充。

 

1. 线程的ID.

   windows: 是全系统唯一的, 可参看msdn上面关于OpenThread的相关说明。

 linux:   不是全系统唯一的,是进程唯一的… 更多... “windows vs linux 编程之区别汇编”