
c语言
文章平均质量分 68
wocjj
这个作者很懒,什么都没留下…
展开
-
gdb调试例子
gdb process core.6019 //调试core文件(gdb) bt //进入栈(gdb) i threads //查看当时的线程 9 process 7036 0xffffe410 in __kernel_vsyscall () 8 process 7042 0xffffe410 in __ker转载 2013-03-16 11:54:45 · 1810 阅读 · 0 评论 -
linux setsockopt
1.closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket:BOOL bReuseaddr=TRUE;setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,sizeof(BOOL));2. 如果要已经处于连接状态的soket在调用closesocket后强制关闭,转载 2012-04-18 13:20:49 · 477 阅读 · 0 评论 -
setsockopt 设置socket 详细用法
1.closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket:BOOL bReuseaddr=TRUE;setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,sizeof(BOOL));2. 如果要已经处于连接状态的soket在调用closesocket后强制关闭,转载 2012-04-18 13:16:36 · 337 阅读 · 0 评论 -
在64位的环境下编译32位的应用程
资料出处:http://blog.yening.cn/2006/11/01/188.htmlWine网址:http://wiki.winehq.org/WineOn64bit测试环境:CPU : 64bit Intel(R) Xeon(TM) CPU 2.80GHz * 2OS :Debain / Linux 2.6.17.11 #2 SMP Thu Sep 7 00:44转载 2012-04-13 18:21:59 · 822 阅读 · 0 评论 -
printf中如何输出长整型?
资料出处:http://hi.baidu.com/iamstupid/blog/item/26b9c0d0b63e9e8ba0ec9c84.htmlprintf中如何输出长整型?一直都听说gcc -Wall的检查要严格很多,今天发现果然如此。写了一个简单的程序,共15行,用gcc -Wall编译时提示有warning:int format, long int arg,找了半天发转载 2012-04-25 19:38:02 · 53567 阅读 · 0 评论 -
玩strict aliasing
转自:瀚海星云 ANSIC版 作者:xhacker一. 不说废话,看代码zjs@xhacker:/tmp$ cat tt.c#include int main(){ int a = 0x12345678; short *p = (short *)&a; short temp; temp = *p; *p = *(p+1); *(p+1) = temp转载 2012-04-14 10:24:13 · 767 阅读 · 0 评论 -
关于gmtime、gmtime_r、localtime、localtime_r
资料出处:http://blog.youkuaiyun.com/csuwzc/article/details/6912104测试环境:vmware 7 + Redhat5.5,系统时间使用UTC,时区为上海。 1、函数功能介绍 使用man gmtime或man localtime都可以的得到这几个函数的介绍。原型如下: struct tm *gmtime(c转载 2012-04-13 18:03:37 · 1232 阅读 · 0 评论 -
c语言数据类型对应字节数(32位,64位 int 占字节数)
资料出处:http://blog.chinaunix.net/uid-25513153-id-182191.html一、程序运行平台 不同的平台上对不同数据类型分配的字节数是不同的。 个人对平台的理解是CPU+OS+Compiler,是因为: 1、64位机器也可以装32位系统(x64装XP); 2、32位机器上可以有1转载 2012-04-10 18:57:00 · 11453 阅读 · 0 评论 -
setsockopt()用法
资料出处:http://linux.chinaunix.net/techdoc/net/2008/01/06/976025.shtml1.closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket:BOOL bReuseaddr=TRUE;setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(constchar*)&b转载 2012-04-18 13:21:41 · 393 阅读 · 0 评论 -
Linux环境进程间通信(五): 共享内存(上)
原文网址:http://www.ibm.com/developerworks/cn/linux/l-ipc/part5/index1.html采用共享内存通信的一个显而易见的好处是效率高,因为进程可以直接读写内存,而不需要任何数据的拷贝。对于像管道和消息队列等通信方式,则需要在内核和用户空间进行四次的数据拷贝,而共享内存则只拷贝两次数据[1]:一次从输入文件到共享内存区,另一次从共享内存区转载 2012-04-04 16:55:18 · 348 阅读 · 0 评论 -
C语言编程:数字金额转换为中文大写金额
先生,这个代码在Linux下用gcc编译通过了。#include #include #include #include wchar_t cstrs[10];wchar_t bit[10];int main(){ cstrs[0]=0x96F6;cstrs[1]=0x58F9;cstrs[2]=0x8D30; cstrs[3]=0x53C4;cstrs[4]=0x转载 2013-02-26 10:13:47 · 7564 阅读 · 2 评论 -
关于 typedef struct 和 struct
请高手帮忙解释以下几种结构体定义的区别:struct{ int x; int y;}test1;struct test{int x;int y;}test1;typedef struct test{int x;int y}text1,text2;这几种方法把小弟弄得头疼,不胜感激!问题补充:还有:type struct{int x;int转载 2012-09-05 17:52:29 · 484 阅读 · 0 评论 -
内存管理
int main(){ char *ptr; // alloc a memory area. ptr = (char*)malloc(10); free(ptr); // alloc an array. ptr = (char*)calloc(10, 1); printf("%u\n", (unsigned)ptr); // realloc.转载 2012-05-23 12:44:19 · 411 阅读 · 0 评论 -
C语言:二维数组 形参传值写法
为什么 写成map[MAX][MAX]或者map[][MAX]就可以 而写成map[MAX][] 或者map[][]就不行?编译器实际处理多维数组是把一维数组分段处理的,也就是说实际上并不存在多维数组,多维数组仅仅是个逻辑概念,所以行下标改变时,编译器必须知道有多少列,以计算偏移地址如果是map[MAX][]的话,假设目前坐标为map[i][x], 要移动到下一行相同列就是map[i转载 2012-06-01 12:55:34 · 1463 阅读 · 0 评论 -
linux下的运行日志
/var/log/messages 查看程序错误日志(内核的日志)程序运行时的段错误会在里面显示(程序出错太多时会显示),程序偶偶的段错误通常不会显示,一般是致命的错误原创 2012-04-19 18:17:58 · 543 阅读 · 0 评论 -
Linux下getsockopt/setsockopt 函数说明
资料出处:http://hi.chinaunix.net/?uid-21832962-action-viewspace-itemid-40517更多资料:http://hi.chinaunix.net/?uid-21832962Linux下getsockopt/setsockopt 函数说明【getsockopt/setsockopt系统调用】 功能描述:转载 2012-04-18 13:18:31 · 475 阅读 · 0 评论 -
MySQL的C语言接口大全
2011-05-29 21:59MYSQL在 C API 中可用的函数:mysql_affected_rows()返回被最新的UPDATE, DELETE或INSERT查询影响的行数。mysql_close()关闭一个服务器连接。mysql_connect()连接一个MySQL服务器。该函数不推荐;转载 2012-04-11 13:09:32 · 596 阅读 · 0 评论 -
c++文件操作
要求:掌握文本文件读写的方法了解二进制文件的读写方法C++文件流:fstream // 文件流ifstream // 输入文件流ofstream // 输出文件流//创建一个文本文件并写入信息//同向屏幕上输出信息一样将信息输出至文件#include#includevoid main(){ ofstream f1("d:\\me.txt"转载 2012-04-09 13:06:16 · 343 阅读 · 0 评论 -
pid_t的类型定义
创建进程时经常会用到进程号的类型定义:pid_t。我们都知道这个类型定义实际上就是int型。但是在linux下的c中的头文件中这个定义到底是怎么定义的呢?今天就把以前找这个定义的过程贴出来:1.首先在/usr/include/sys/types.h中有如下定义#include ......#ifndef __pid_t_definedtypedef __pid_t转载 2012-04-09 13:03:32 · 3565 阅读 · 1 评论 -
printf中如何输出长整型?
一直都听说gcc -Wall的检查要严格很多,今天发现果然如此。写了一个简单的程序,共15行,用gcc -Wall编译时提示有warning:int format, long int arg,找了半天发现问题出在:用%d输出long型变量。查书,发现书上说的是输出long时用%l,修改之,错的更严重,直接说是无法识别的格式符....上网查阅资料,正确的形式应该是%ld。用C这么多年,居然连这个都搞转载 2012-04-09 13:02:24 · 6758 阅读 · 1 评论 -
Linux内存管理之mmap详解 (2
原文地址:Linux内存管理之mmap详解 作者:heavent2010Linux内存管理之mmap详解一. mmap系统调用1. mmap系统调用 mmap将一个文件或者其它对象映射进内存。文件被映射到多个页上,如果文件的大小不是所有页的大小之和,最后一个页不被使用的空间将会清零。munmap执行相反的操作,删除特转载 2012-04-04 17:58:48 · 1036 阅读 · 0 评论 -
O_EXCL
open系统调用:#include int open(const char *pathname, int oflag, ... /*mode_t mode */ );其中,oflag有个可选值为:O_EXCLGenerate an error if O_CREAT is also specified and the file already exists转载 2012-04-04 12:25:30 · 801 阅读 · 0 评论 -
Linux的进程编程-之二-进程间通信(管道)
1.1 管道管道可用于具有亲缘关系(父子进程或者兄弟进程)之间的通信,管道具有以下特点:1.管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道;2.管道对于两端的进程而言,就是一个文件,但它不属于文件系统,只存在于内存中;3.每次写入的内容都添加在管道缓冲区的末尾,每次都是从管道缓冲区的头部读出数据;4.管道没有名字;转载 2012-04-04 12:20:47 · 419 阅读 · 0 评论 -
O_EXCL的作用
设想这样一个需求:某个任务要求只能单个进程执行,不能多个进程同时执行。但是不能确保多个进程同时启动,尝试执行这个任务。这样就进一步要求,只有第一个执行的进程可以继续,后续尝试执行的进程都报错退出。方案之一就是使用带有O_EXCL标志的open()尝试打开一个文件。第一个进程执行时文件并不存在,它能成功创建文件并继续执行。第二个及后续的其它进程会因为文件已存在,从而ope转载 2012-04-04 12:17:09 · 984 阅读 · 0 评论 -
Unix/Linux下的open函数(O_CREAT和O_EXCL)
名人名言:有人问:写一首好诗,是靠天才呢?还是靠艺术?我的看法是:苦学而没有丰富的天才,有天才而没有训练,都归无用;两者应该相互为用,相互结合。——亚里士多德 今天想在Ubuntu上用open()实现检测文件是否存在,若存在就read()的功能,代码如下:int fd=open(temp,O_RDONLY|O_CREAT|O_EXCL,S_IRWXU);if(-1==f转载 2012-04-04 12:15:00 · 1583 阅读 · 0 评论 -
C++字符串拷贝函数(所有性能已在g++和vc下测试)
1. void bcopy(const void *src, void *dest, size_t n);功能: 拷贝n字节内容从src到dest说明: 该函数在内存重叠情况下仍然正常,该函数建议不再使用,而是用memcpy代替返回值: 无2. void *memcpy(void *dest, const void *src, size_t n);功能: 拷转载 2012-04-11 12:51:30 · 695 阅读 · 0 评论 -
C++中遇到同名函数问题,可以使用命名空间解决
tdafx.h"#include tream>using std::cout; //使用命名空间std中的coutusing std::endl;namespace mycode //在自己的mycode命名空间中定义foo()函数{ void foo() { cout"foo"<<endl转载 2012-04-10 19:48:02 · 2158 阅读 · 0 评论 -
32位/64位机上常用数据类型字节数(C语言)
可用如sizeof(char),sizeof(char*)等得出32位编译器char :1个字节char*(即指针变量): 4个字节(32位的寻址空间是2^32,即32个bit,也就是4个字节。同理64位编译器)short int : 2个字节int: 4个字节unsigned int : 4个字节float: 4个字节dou转载 2012-04-10 18:58:05 · 838 阅读 · 0 评论 -
c语言防重复运行
//lockfile.c#include #include #include #include #include #include int main(){ int fd,i; char path[]="/home/taoyong/test.txt"; extern int errno; fd=open(path,O转载 2012-04-09 13:07:12 · 997 阅读 · 0 评论 -
Makefile文本处理函数
$(subst FROM,TO,TEXT) 函数名称:字符串替换函数 函数功能:把字符串TEXT中的FROM字符串替换为TO 返回值:替换后的新字符串 $(subst ee,EE,feet on the stree) //替换“feet on the street“中的ee为EE。结转载 2012-04-09 12:59:36 · 615 阅读 · 0 评论 -
c++连接mysql
#include "mysql.h" MYSQL mysql; MYSQL_RES *res; MYSQL_ROW row; void exiterr(int exitcode) { fprintf( stderr, "%s\n", mysql_error(&m转载 2012-04-10 00:04:59 · 516 阅读 · 0 评论 -
一个C++连接MYSQL数据库的例子
//下面的代码是一个实现C++连接MYSQL数据库的很好的例子//这里用了建表,插入,检索,删表等常用功能//我用VC++6.0生成,已经成功连接了。//在VC++6.0中要想把做一下两步准备工作才可以。//(1)Tools->Options->Directories->Include files中添加C:\Program Files\MySQL\MySQL Server 6.0\转载 2012-03-30 23:43:30 · 491 阅读 · 0 评论