
C语言编程
文章平均质量分 78
bollaxu
这个作者很懒,什么都没留下…
展开
-
宏中"#"和"##"的用法
宏中"#"和"##"的用法 一、一般用法 我们使用#把宏参数变为一个字符串,用##把两个宏参数贴合在一起. 用法:#include<cstdio> #include<climits> using namespace std; #define STR(s) #s #define CONS(a,b) int(a##e##b...原创 2011-01-10 10:39:53 · 123 阅读 · 0 评论 -
CppUnit学习
CppUnit定义了几个基础类以及几个继承它们的子类。基础类主要是定义了一些virtual函数,规定一些行为;用户主要继承使用如TestCase这样的类来完成测试用例。 TestFixture定义了setUp()和tearDown()两个virtual函数,用来给测试中用到的对象实例做初始化和清理。 Test/TestLeaf(单个test)/TestComposit...2012-01-13 11:22:41 · 143 阅读 · 0 评论 -
MySQL C API的内存泄露问题
程序使用MySQL的C API比较频繁,在检查程序内存泄露的时候,想到了API里面会不会有内存泄露的问题。网上说mysql api在使用的时候会出现泄露,有人用了valgrind来测试,找到了可能出现泄露的地方,官方的api文档里面也说到,如果使用完api之后,最好调用mysql_library_end()函数来释放内存。 mysql api的官方建议,如果是多线程的时候,最好是在创建线程...原创 2012-01-10 21:18:08 · 283 阅读 · 0 评论 -
使用fastcgi c api时注意的问题
最近用fastcgi的c语言api写服务,发现一个问题。我用nginx来接收请求,并通过fastcgi_pass传递到c程序。在用curl测试请求的时候,发现c程序是有被调用的,但是nginx返回的响应一直是502 "upstream closed prematurely FastCGI stdout while reading response header from upstream"。在网上...2012-01-07 13:06:37 · 294 阅读 · 0 评论 -
Internet地址结构及转换
Internet地址的基本数据结构如下: #include <netinet/in.h>struct sockaddr_in { short sin_family; // e.g. AF_INET unsigned short sin_port; // e.g. htons(3490) struct i...2011-07-05 21:47:34 · 137 阅读 · 0 评论 -
C++环境下的expect远程命令执行
首先,必须安装几个开发包,在centos/fedora下,可以使用yum安装:$ yum -y install tcl-devel expect-devel 装完以后,就可以使用expect来写代码了,从网上拉下来一段代码,稍微修改了一下:#include <tcl.h>#include <expect.h>#include <stdio.h&...2011-06-29 17:49:05 · 496 阅读 · 0 评论 -
diff和patch给源码做补丁
如果想要对两个目录下的所有文件做diff,可以使用以下命令: $ diff -BurN [org-src-dir] [target-src-dir] > [patch-file] 其中-B可以忽略所有的空白行,-r对所有的子目录进行递归的操作。[org-src-dir]是未经修改前的源文件目录,[target-src-dir]是修改后的源文件目录。注意:最后生成的p...2011-06-02 21:03:33 · 130 阅读 · 0 评论 -
accept的Invalid Argument错误
在编写socket程序的时候,遇到一个奇怪的问题,服务端用accept接收请求,客户端通过telnet连接上去。结果每次连上去以后连接又立即断开了,而server端accept以后并没有close连接。 代码如下:/*server*/int main(){ //... socklen_t cli_len; struct sockaddr_in clientad...原创 2011-09-07 18:54:24 · 544 阅读 · 0 评论 -
查看编译器的默认include路径
在shell下运行:$ echo | gcc -v -x c++ -E -或者$ echo | g++ -v -x c++ -E - 可以看到类似如下的结果Using built-in specs.Target: x86_64-redhat-linuxConfigured with: ../configure --prefix=/usr --mandir=/usr/...原创 2011-08-25 15:24:32 · 356 阅读 · 0 评论 -
Pthreads并行编程之spin lock与mutex性能对比分析[zz]
POSIX threads(简称Pthreads)是在多核平台上进行并行编程的一套常用的API。线程同步(Thread Synchronization)是并行编程中非常重要的通讯手段,其中最典型的应用就是用Pthreads提供的锁机制(lock)来对多个线程之间共 享的临界区(Critical Section)进行保护(另一种常用的同步机制是barrier)。Pthreads提供了多种锁机制:...原创 2011-01-20 12:46:38 · 144 阅读 · 0 评论 -
mmap()介绍[zz]
mmap函数是unix/linux下的系统调用,来看《Unix Netword programming》卷二12.2节对mmap的介绍:The mmap function maps either a file or a Posix shared memory object into the address space of a process.We use this function for ...原创 2011-01-13 11:29:34 · 123 阅读 · 0 评论 -
exec函数族的使用[zz]
启动一个新程序,替换原有的进程,因此这个新的被exec执行的进程的PID不会改变,和调用exec函数的进程一样。 #include <unistd.h>int execl(const char *path, const char *arg, ...);int execlp(const char *file, const char *arg, ...);int e...原创 2011-01-11 08:29:53 · 121 阅读 · 0 评论 -
sigaction实例[zz]
struct sigaction{ void (*sa_handler)(int); //在调用前加入信号屏蔽字,仅当信号捕捉函数返回时再将进程的信号屏蔽字复位为原先值*/ sigset_t sa_mask; //Signal options int flags; //结构中还有一个参数,不懂。} #include <stdio...原创 2011-01-11 08:20:42 · 171 阅读 · 0 评论 -
C/C++诡异的core
在编写c/c++程序的时候有时候会出一些诡异的core,无法定位到具体的代码或者定位到了一些貌似不可能出错的地方。这很可能是由于栈溢出、数组越界、打印类型不符(比如常见的%s输成了string变量而不是用c_str()方法)导致的。这要求在编写代码的时候要注意,一个好的习惯是在编译的时候发现的warning全部去掉。...原创 2012-04-10 11:51:10 · 172 阅读 · 0 评论