
Linux C编程
canlynet
喜欢编程,从事IT行业。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
关于signal程序的一个思考——进程排队问题
linux中的信号是一种异步通信,所谓“异步”,就是指这个事件发生的时间是无法确定的,他有可能在任何时刻发生。之所以把标题写成“进程排队问题”,是我对我要提到的问题的思考而已,如果有高人能否决我的观点,我诚心接受。请看如下c程序:[code="c"]#include #include //exit() is used#include #include #i...2010-03-10 06:38:48 · 262 阅读 · 0 评论 -
HTML中unicode字符串转UTF-8
最近看新浪微博的HTML源码时发现里面用了好多unicode编码方式的字符串,比如:\u65b0\u6d6a\u8ba4\u8bc1,这类unicode编码经过js处理后以utf-8的方式展现给用户。那么,我们在linux下的C编程,如何处理这类unicode编码呢? 首先,我们将字符串转换成unicode数据,然后可以使用unicode与utf-8的对应编码方式,直接转换,另外也可以...原创 2012-05-02 14:29:10 · 749 阅读 · 0 评论 -
libjpeg用法
libjpeg是一个完全用C语言编写的库,包含了被广泛使用的JPEG解码、JPEG编码和其他的JPEG功能的实现。这个库由独立JPEG工作组维护。最新版本号是6b,于1998年发布。可以参考维基百科关于libjpeg的介绍http://zh.wikipedia.org/wiki/Libjpeg。libjpeg库的数据结构 用libjpeg库解码jpeg数据的时候,最重要的数据类型...原创 2012-03-01 11:32:13 · 1930 阅读 · 1 评论 -
getifaddrs()和struct ifaddrs的使用,获取本机IP
ifaddrs结构体定义如下:struct ifaddrs { struct ifaddrs *ifa_next; /* Next item in list */ char *ifa_name; /* Name of interface */ unsigned int ifa_flags; /* F...2012-03-05 11:09:34 · 317 阅读 · 0 评论 -
记录锁
[code="c"]#include #include #include #include #include #include #define read_lock(fd, offset, whence, len) \ lock_reg(fd, F_SETLK, F_RDLCK, offset, whence, len)#define read_lock...原创 2012-07-14 19:58:56 · 78 阅读 · 0 评论 -
检测TIME_WAIT时间的程序
TIME_WAIT发生在主动关闭的一端,一般是服务器,当服务器主动关闭后,如果想再次绑定相同的端口号,会出现Address already in use的提示。我们写一个程序,让服务器发送给客户端信息后主动关闭(注意发送信息不是必须的,只要连接建立即可),然后在客户端执行close之前打印TIME_WAIT开始的时间(注意这里靠前一点,所有测试结果有时候会多1秒),服务器紧接着创建socket...原创 2012-07-15 10:56:50 · 186 阅读 · 0 评论 -
C的正则匹配
http://see.xidian.edu.cn/cpp/html/1428.html上述网址有关于C的正则匹配用法,或者百度、google搜索“C正则”也能找到为数不多的用法介绍。这里补充一点,就是C的正则表达式传递进去的时候,不可以加//来包围正则,自然也不支持如/[a-z]+/i,它是通过regcomp进行编译的,如果要忽略大小写,编译时设置标记为REG_ICASE即可。另外还要注意...原创 2012-10-31 21:48:18 · 178 阅读 · 0 评论 -
识别office版本号
代码见附件。原创 2012-11-01 18:02:09 · 261 阅读 · 0 评论 -
glib2.34.3的编译安装
我的电脑是mac os系统,所以库是.dylib结尾的,与so等同。 编译glib2.34.3的时候,遇到了两个主要问题,第一个是报缺少库libffi,这时候,下载libffi-3.0.13安装好了,仍然报告这个。按如下方法解决,按照你编译安装的路径修正一下:export LIBFFI_LIBS=/usr/local/lib/export LIBFFI_CFLAGS=/usr/...原创 2013-03-26 17:46:33 · 789 阅读 · 0 评论 -
仅支持IPV4的IP转换(字符串,网络字节序)
后面我会写个文章,给出一个IPV4和IPV6通用的转换函数(其实就是从UNIX网络编程第1卷上摘下来的)。 // 演示inet_aton和inet_ntoa函数的用法#include <stdio.h>#include <arpa/inet.h>int main(int argc, char **argv){ struct in...原创 2011-04-09 20:48:14 · 695 阅读 · 0 评论 -
线程同步机制——条件变量
条件变量与互斥锁同时使用:比如一个线程在队列未满时可往队列添加,队列满时则阻塞等待;另一个线程在队列不空时从队列取出,队列空时则阻塞等待。这种情况用条件变量非常合适。需要两个条件变量,一个not_full,一个not_empty,队列满时,not_full条件不满足,这时阻塞等待(通过函数pthread_cond_wait或pthread_time_wait)另一个从队列取出的线程取出一个数据...原创 2011-02-14 11:16:23 · 179 阅读 · 0 评论 -
对TCP/IP四次分手的总结
【转载自】http://blog.youkuaiyun.com/aaa6695798/archive/2009/12/22/5057476.aspx由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。这个原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。收到一个 FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。首先进行关闭的一方将执行主...2010-03-10 11:59:48 · 140 阅读 · 0 评论 -
“关于memcpy和memmov的区别”的思考
[quote]大家注意!这篇文章的思考有问题。当dest < source的时候,采取从高位向低位赋值,是有问题的,如果dest+count-1 > source && dest < source的情况。[/quote]先看实现:[code="c"]void* memcpy(void* dest, void* source, size_t count){ void* ret...2010-03-12 10:29:17 · 249 阅读 · 0 评论 -
Core dump
在c语言编程时,core文件可以帮助我们查找内存原因引起的程序故障。我们先看看如下英文并翻译:[quote]In computing, a core dump consists of the recorded state of the working memory of a computer program at a specific time, generally when the pr...2010-03-12 22:28:32 · 131 阅读 · 0 评论 -
运行时无法找到第三方库的解决办法
./getmytesterror while loading shared libraries: xxx.so: cannot open shared object file: No such file or directory 需要将环境变量export LD_LIBRARY_PATH=xxxxxx即可。或者在Makefile中的-lxxx后面加上-Wl,-R dir或在~...原创 2010-05-10 15:21:49 · 685 阅读 · 0 评论 -
MX解析代码
网上学来的代码。大部分是别人写的,自己改进了一下,添加了若干注释。请注意在获取MX Domain Name那一步的时候,即:[code="c"] // 第10.3步:获取域名。 //资源数据则根据类型字段的值有不同的格式. 对于A类型, 资源数据是IP地址. 对于MX查询, 资源数据是优先值和域名, 域名的格式与查询名字段格式相同 memset(name,0,MAXDNA...2010-05-13 23:50:27 · 1040 阅读 · 0 评论 -
对TCP/IP三次握手的理解
下述段落摘自:http://linux.chinaunix.net/techdoc/net/2009/06/15/1118762.shtml[quote]【三次握手的过程】 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;对应客户端的connect函数(Linux)。 第二次握手:服务器收到syn包,必须确认...2010-03-03 20:36:46 · 121 阅读 · 0 评论 -
通过域名获取ip的代码inet_ntop
通过如“www.163.com”获取ip地址。[code="c"]#include "global.h"/* * @brief 通过主机名host如"www.163.com"获得ip地址 * @param[in] host 主机名 * @param[out] ip 缓冲区,兼容ipv4和v6 * @return 成功返回0,失败返回负值。 */...原创 2010-05-18 19:57:14 · 326 阅读 · 0 评论 -
select函数的用法一
这个例子来自网上,调试修改后,粘贴如下:#include <sys/time.h>#include <sys/types.h>#include <sys/stat.h>#include <assert.h>#include <unistd.h>#include <fcntl.h>int main...原创 2011-05-04 14:17:14 · 160 阅读 · 0 评论 -
C实现Replace替换函数
在php中有str_replace()可以将字符串中的某些内容替换成另外的内容,但c并没有提供这样的功能。因为c要管理内存,当替换成的字符串长度大于要替换的字符串长度时,原来存放数据的空间是否足够以供替换后的数据存放是个问题。为此:C可以实现返回一个动态分配内存的空间,存放替换后的数据。另外,如果不想使用新空间存放,那么必须保证存放数据的内存足够大,比如如果肯定数据替换后不会超过10KB,...原创 2012-11-08 20:33:32 · 2883 阅读 · 0 评论