- 博客(26)
- 资源 (12)
- 收藏
- 关注
转载 fileno函数与ftruncate函数
<br />fileno()函数<br />功 能:把文件流指针转换成文件描述符<br /> 相关函数:open, fopen<br /> 表头文件:#include <stdio.h><br /> 定义函数:int fileno(FILE *stream)<br /> 函数说明:fileno()用来取得参数stream指定的文件流所使用的文件描述词<br /> 返回值 :返回和stream文件流对应的文件描述符。如果失败,返回-1。<br /> 范例:<br />#include <s
2011-03-21 13:54:00 870
转载 memmove、memcpy和memccpy简介
<br />memmove、memcpy和memccpy三个函数都是内存的拷贝,从一个缓冲区拷贝到另一个缓冲区。<br /> memmove(void *dest,void*src,int count)<br /> memcpy(void *dest,void *src,int count)<br /> memccpy(void*dest,void*src,int ch,int count)<br /><br /> 表头文件: #include <string.h><br /> 定义函数: voi
2011-03-17 16:58:00 506
转载 文件锁使用原理及其方法
<br />关于读写文件时文件锁的一些问题。<br /> bool flock ( int handle, int operation);<br /> man 2 flock 就可以查看flock的一些信息。<br /><br /> flock() 操作的 handle 必须是一个已经打开的文件指针。operation 可以是以下值之一:<br /> 要取得共享锁定(读取程序),将 operation 设为 LOCK_SH(PHP 4.0.1 以前的版本设置为 1)。<br /> 要取得独
2011-03-17 10:53:00 3551
原创 linux上开发minigui的配置过程
<br />配置minigui可能每个人第一次都不成功,都是在网上查了一片又一片才知道该怎么配置.<br />在此,我个人写一下我配置的过程:<br />1修改linux的默认字符集,解决与windows之间传递文件出现乱码的问题<br /> # echo "zh_CN.GB2312 GB2312" >> /var/lib/locales/supported.d/local # locale-gen # vim /etc/default/locale #LANG="zh_CN:UTF-8" LA
2011-03-16 22:32:00 755
转载 Linux下select函数的使用
一.Select 函数详细介绍 Select在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如connect、 accept、recv或recvfrom这样的阻塞程序(所谓阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时必须等待某个事件的发 生,如果事件没有发生,进程或线程就被阻塞,函数不能立即返回)。 可是使用Select就可以完成非阻塞(所谓非阻塞方式non-block,就是进程或线程执行此函数
2011-03-16 12:20:00 669
转载 linxu select 返回值
<br />#include <sys/types.h> #include <sys/socket.h> #include <string.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <errno.h> #define BUFFER 800 #define SERV_PORT 3333 int main() { int sockfd,n; socklen_t le
2011-03-16 11:44:00 1083
转载 unix linux 文件锁
有三种不同的文件锁,这三种都是“咨询性”的,也就是说它们依靠程序之间的 合作,所以一个项目中的所有程序封锁政策的一致是非常重要的,当你的程序需 要和第三方软件共享文件时应该格外地小心。 有 些程序利用诸如 FIlENAME.lock 的文件锁文件,然后简单地测试此类文件是否存在。这种方法显然不太好,因为当产生文件的进程被杀后,锁文件依然存在,这样文件也许会被永久锁住。UUCP 中把产生文件的进程号PID存入文件,但这样做仍然不保险,因为PID的利用是回收型的。 这里是三个文件锁函数:
2011-03-14 19:15:00 831
转载 Unix/Linux C静态库的使用
单独使用gcc的时候,不用考虑C_INCLUDE_PATH/CPLUS_INCLUDE_PATH/LIBRARY_PATH/LD_INCLUDE_PATH这些变量,但使用make的时候,就要显示地提供这些变量(如果必要) 静态库的创建与操作: ar [drqtpmx] [options] archive.a object.o -d: 从静态库中删除文件objfile -r: 替换或插入objfile -q: quick append,加入objfile without checking -t:
2011-03-14 19:09:00 843
转载 undefined reference to `sqrt' 问题
<br />在gcc下用到数学函数,如sqrt。在gcc时要加上 -lm 参数,这样告诉编译器我要用到数学函数了 。<br /> 如:<br />gcc a.c -o a -lm
2011-03-14 00:09:00 1270
转载 如何学好C++,用好类库很重要
<br />如果你有一定的C基础可能学起来比较容易些,但是学习C++的过程中又要尽量避免去使用一些C中的思想;平时还要多看一些高手写的代码,遇到问题多多思考,怎样才能把问题抽象化,以使自己头脑中有类的概念;最后别忘了经常上机自己调调程序,这是谁也代替不了的. <br />C++类库介绍 <br /><br /> 再次体现了C++保持核心语言的效率同时大力发展应用库的发展趋势!!在C++中,库的地位是非常高的。C++之父 Bjarne Stroustrup先生多次表示了设计库来扩充功能要好过设计更
2011-03-08 11:16:00 509
转载 开源的SIP协议栈 PJSIP
<br />PJSIP是一个开放源代码的SIP协议栈。它支持多种SIP的扩展功能,目前可说算是最流行的sip协议栈之一了。<br />下面列出其重要的几种优点:<br />1)代码层次非常清晰,从低级到高级都提供了很方便的接口供开发;<br />2)提供相当多的测试用例和一个基于pjsip开发的命令行UA程序供开发人员参考;<br /> 3).高度的可移殖性 <br /> 只需简单的编译一次,它能够在多种平台上运行(所有Windows 系统列, Windows Mobile, Linux, 所有Unix
2011-03-08 10:32:00 1025
转载 C技巧:结构体参数转成不定参数
下面这段程序是一个C语言的小技巧,其展示了如何把一个参数为结构体的函数转成一个可变参数的函数,其中用到了宏和内建宏“__VA_ARGS__ ”,下面这段程序可以在GCC下正常编译通过:1234567891011121314151617181920#include #define func(...) myfunc((struct mystru){__VA_ARGS__}) structmystru { constchar*name; intnumber; }; voidmyfunc(structmystr
2011-03-07 23:21:00 555
转载 Linux设备驱动程序之阻塞/非阻塞IO----等待对列
<br />十一过后..<br />小王也刚好即将大学毕业,现在要开始写简历,投简历,找工作了。<br />到了家工作单位,小王欣喜若狂,可再一看,心都凉了半截..<br />“咋了,小王,看你找工作,我都来了帮你大气,怕什么,不就人多点吗..”看着排到电梯口的长龙,我说(其实,我心里也害怕,可也不能说出来不是)。<br />“不是,你不知道,我并不怕面试上有问题,有你在,技术上还是问题吗,不相信自己还不相信你啊,我主要是怕连面试的机会都没有,你看那么多人,不知道要排到哪里去了,你说每年都这样,那些人力主管
2011-03-04 16:57:00 647
原创 linux c 信号量编程
信号量 当我们在多用户系统,多进程系统,或是两者混合的系统中使用线程操作编写程序时,我们经常会发现我们有段临界代码,在此处我们需要保证一个进程(或是一个线程的执行)需要排他的访问一个资源。 信号量有一个复杂的编程接口。幸运的是,我们可以很容易的为自己提供一个对于大多数的信号量编程问题足够高效的简化接口。 我们在第7章的第一个例子程序中--使用dbm访问数据库--如果多个程序尝试同时更新数据库,那么数据将会被破坏。两个不同的程序要求两个不同的用户为 数据库输入数据则没有问题;问题的本质就在于更新数据库
2011-03-03 19:39:00 2159
转载 linux-多线程-互斥锁在多进程共享
<br /> 1. #include <sys/stat.h> 2. #include <fcntl.h> 3. #include <sys/mman.h> 4. #include <unistd.h> 5. 6. 7. #include <pthread.h> 8. #include <stdio.h> 9. #include <stdlib.h> 10. 11. 12
2011-03-03 18:36:00 2829
转载 shmget() -- 建立共享内存
<br />#include <sys/ipc.h> #include <sys/shm.h> int shmget(key_t key, size_t size, int shmflg);<br /><br />key_t key<br /> key标识共享内存的键值: 0/ IPC_PRIVATE 。 当key的取值为IPC_PRIVATE,则函数shmget()将创建一块新的共享内存;如果key的取值为0,而参数shmflg中设置了IPC_PRIVATE这个标志,则同样将创建一块
2011-03-03 15:55:00 731
转载 ftok的陷阱
根据pathname指定的文件(或目录)名称,以及proj_id参数指定的数字,ftok函数为IPC对象生成一个唯一性的键值。在实际应 用中,很容易产生的一个理解是,在proj_id相同的情况下,只要文件(或目录)名称不变,就可以确保ftok返回始终一致的键值。然而,这个理解并非 完全正确,有可能给应用开发埋下很隐晦的陷阱。因为ftok的实现存在这样的风险,即在访问同一共享内存的多个进程先后调用ftok函数的时间段中,如果 pathname指定的文件(或目录)被删除且重新创建,则文件系统会赋予这个同名
2011-03-03 15:14:00 624
转载 如何用ftok来产生相关的key_t值
在System V中,我们经常用用key_t的值来创建或者打开信号量,共享内存和消息队列。这个在IPC的环境中十分的重要,比如说,服务器创建了一个消息队列,等待 客户机发送请求。那么如何创建或者打开已有的消息队列呢?一般而言,我们对于服务器使用的路径和项目id(proj_id)是已知的,所以客户机可以获取 相同的key来打开 消息队列并进行操作。下面就是ftok的使用原型:<br /> # include <sys/types.h><br /> # include <sys/ipc
2011-03-03 15:08:00 544
转载 使用共享内存实现进程间通信 shmget shmat shmctrl shmdt
共享内存的函数有以下几个:(1)int shmget(key_t key, int size, int shmflg),开辟或使用一块共享内存。(2)void *shmat(int shmid, const void *shmaddr, int shmflg), 将参数shmid所指向的共享内存与当前进程连接。当使用某共享内存时,需要先使用shmat,达成连接。(3)int shmdt(const void *shmaddr),将先前用shmat连接的共享内存与当前进程解除连接。参数shmaddr为shma
2011-03-03 14:32:00 970
转载 vim 窗口分割使用
<br />同时显示两个不同的文件, 或者同时查看同一个文件的两个不同位置, 或者是同步显示两个文件的不同之处. 所有这些都可以通过分隔窗口的功能来实现.<br />1. 分隔一个窗口<br />打开一个新窗口最简单的办法就是使用命令: (ex command)<br />:split<br />该命令将屏幕分为上下两个窗口并将光标定位在上面的窗口中:<br /><br /> +----------------------------------+<br /> |/* file one.c */
2011-03-03 14:29:00 9039
转载 Linux环境进程间通信: 共享内存(下)
<br />系统调用mmap()通过映射一个普通文件实现共享内存。系统V则是通过映射特殊文件系统shm中的文件实现进程间的共享内存通信。也就是说,每个共享内存区域对应特殊文件系统shm中的一个文件(这是通过shmid_kernel结构联系起来的),后面还将阐述。<br />1、系统V共享内存原理<br />进程间需要共享的数据被放在一个叫做IPC共享内存区域的地方,所有需要访问该共享区域的进程都要把该共享区域映射到本进程的地址空间 中去。系统V共享内存通过shmget获得或创建一个IPC共享内存区域,并返
2011-03-03 11:30:00 616
转载 Linux环境进程间通信: 共享内存(上)
<br />采用共享内存通信的一个显而易见的好处是效率高,因为进程可以直接读写内存,而不需要任何数据的拷贝。对于像管道和消息队列等通信方式,则需要在内 核和用户空间进行四次的数据拷贝,而共享内存则只拷贝两次数据[1]:一次从输入文件到共享内存区,另一次从共享内存区到输出文件。实际上,进程之间在共 享内存时,并不总是读写少量数据后就解除映射,有新的通信时,再重新建立共享内存区域。而是保持共享区域,直到通信完毕为止,这样,数据内容一直保存在共 享内存中,并没有写回文件。共享内存中的内容往往是在解除映射时才
2011-03-03 10:53:00 527
转载 简述Linux 文件系统的目录结构
<br />摘要: Linux文件系统是呈树形结构,了解Linux文件系统的目录结构,对于我们驾驭Linux还是有必要的。本文对Linux下比较重要的目录加以解说,以答初学者所说的“杂乱无章”目录结构,给一个简要的说明。 <br /><br /> 目录<br />1、什么是文件系统; <br />2、文件系统的组织结构简说;<br />3、文件系统的组织结构分析; <br />4、本文未尽事宜; <br />5、关于本文;<br />6、后记; <br /><br /> 正文<br /><br />
2011-03-02 21:11:00 518
原创 va_list 详解
<br /><br />VA_LIST 是在C语言中解决变参问题的一组宏<br />他有这么几个成员:<br />1) va_list型变量:<br />#ifdef _M_ALPHA<br /> typedef struct {<br /> char *a0; /* pointer to first homed integer argument */<br /> int offset; /* byte offset of next paramet
2011-03-02 11:24:00 428
转载 malloc和calloc使用
<br />进程对动态内存的请求被认为是不紧迫的。例如,当进程的可执行文件被装入时,进程并不一 定立即对所有的代码进行访问。类似地,当进程调用malloc() 请求动态内存时,并不意味着进程很快就会访问所有获得的内存。因此一般来说,内核总是尽量推迟给用户态进程动态分配内存。<br /> The kernel succeeds in deferring the allocation of dynamic memory to processes by using a new kind
2011-03-02 10:29:00 837
转载 Linux C 编程内存泄露检测工具:memwatch
Memwatch简介<br />在三种检测工具当中,设置最简单的算是memwatch,和dmalloc一样,它能检测未释放的内存、同一段内存被释放多次、位址存取错误及不当使用未分配之内存区域。请往http://www.linkdata.se/sourcecode.html 下载最新版本的Memwatch。安装及使用memwatch<br />很幸运地,memwatch根本是不需要安装的,因为它只是一组C程序代码,只要在你程序中加入memwatch.h,编译时加上-DMEMWATCH -DMW_STDIO及
2011-03-01 19:26:00 642
Linux_C函数.chm
2010-03-23
高质量CandC++编程指南.chm
2010-03-23
C 类库 大家看看 也许在不知道这个函数原理的时候可能有用
2010-01-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人