linux
Dablekai
这个作者很懒,什么都没留下…
展开
-
linux 时间转换
linux下的时间函数我们在编程中可能会经常用到时间,比如取得系统的时间(获取系统的年、月、日、时、分、秒,星期等),或者是隔一段时间去做某事,那么我们就用到一些时间函数。linux下存储时间常见的有两种存储方式,一个是从1970年到现在经过了多少秒,一个是用一个结构来分别存储年月日时分秒的。time_t 这种类型就是用来存储从1970年到现在经过了多少秒,要想更精确一点,可以用结构s转载 2014-01-12 12:32:07 · 768 阅读 · 0 评论 -
linux 简单的下载down
#include #include #include #include #include #include #include #include #include #include #include #include #include int main ( int argc, char *argv[] ){int sockfd;st原创 2014-02-13 11:07:13 · 761 阅读 · 0 评论 -
linux 获取程序运行的运行路径
char * CMainServer::get_exe_path( char * buf, int count){ int i; int rslt = readlink("/proc/self/exe", buf, count - 1); if (rslt = count - 1)) { return NULL; }原创 2014-02-27 16:18:13 · 757 阅读 · 0 评论 -
printf 缓冲机制的问题
printf()打印的时候,才int32_t a = 1234; int64_t b = 8976;printf( "b = %lld, a = %d \n", b, a );原创 2014-04-09 16:33:37 · 926 阅读 · 0 评论 -
linux 下cat都正常显示,vi却显示乱码 问题解决
今天在做一个东西的时候发现,LANG设置为en_US.UTF-8,putty上的编码设置为Use font encoding, putty上输出汉字正常,重定向到文件后vi乱码,cat,more这个文件汉字显示也正常,查了网上很多东西最后发现按一种说法改对了:应该是格式化的问题! 比如man手册的文件有一些格式标记,你用man ,cat都可以正常现实,但是用vi看起来就有点混乱!因为vi把转载 2014-05-19 14:11:29 · 3722 阅读 · 0 评论 -
linux man手册
无意之中看到的一个网站,不错。。。http://linux.die.net/man/3/getaddrinfo原创 2014-05-29 12:23:58 · 740 阅读 · 0 评论 -
在调用静态库,一直提示undefined reference to 问题解决
1 : 那就是没有 加入某库才提示的,,可以指定路径原创 2014-08-14 15:13:13 · 12458 阅读 · 2 评论 -
brk和sbrk malloc关系讲解
brk和sbrk主要的工作是实现虚拟内存到内存的映射.在GNUC中,内存分配是这样的: 每个进程可访问的虚拟内存空间为3G,但在程序编译时,不可能也没必要为程序分配这么大的空间,只分配并不大的数据段空间,程序中动态分配的空间就是从这 一块分配的。如果这块空间不够,malloc函数族(realloc,calloc等)就调用sbrk函数将数据段的下界移动,sbrk函数在内核的管理原创 2014-09-12 16:10:59 · 1967 阅读 · 0 评论 -
gdb 显示全文
GDB下用p看一个字符串的时候默认显示是截断的,可以通过set print element 0命令显示完整的字符串。原创 2014-09-04 13:25:31 · 619 阅读 · 0 评论 -
linux 文件时间
linux 文件一般有三个时间 (通过stat或者lstat获取文件属性)可以得到文件的st_atime, st_mtime, st_ctime当使用 cat read 等一系列读取文件操作的时候,文件的st_atime会跟随着一直改变;我的系统是ubuntu,当使用vi操作的时候,文件的访问时间st_atime没有跟随着变化当使用 write 等一系列写操作文件的时原创 2014-12-18 12:06:00 · 542 阅读 · 0 评论 -
利用strace 调试程序
strace -p pid 调试程序;可以看到进程执行的过程,显示的是系统调用的函数,同时可以看出系统调用的返回值转载 2014-12-18 10:40:14 · 691 阅读 · 0 评论 -
网络包流程
发送:应用程序调用系统调用,将数据发送给socketsocket检查数据类型,调用相应的send函数send函数检查socket状态、协议类型,传给传输层tcp/udp(传输层协议)为这些数据创建数据结构,加入协议头部,比如端口号、检验和,传给下层(网络层)ip(网络层协议)添加ip头,比如ip地址、检验和如果数据包大小超过了mtu(最大数据包大小),则分片;ip将这些数据转载 2015-01-14 13:43:46 · 627 阅读 · 0 评论 -
wget gzip
Apache启用gzip/deflate或者Nginx启用gzip之后用wget测试的话需要加上--header="accept-encoding:gzip"用curl则加上--compressed浪费了20分钟在这选项上,milk关于gzip和deflate有两篇文章(1和2), 作者应该是一个人,明显是从1毛跳去了性浪..转载 2014-02-13 16:00:38 · 1305 阅读 · 0 评论 -
case多条件
case '0'...'9': printf( "test\n" ); break;原创 2014-01-20 16:43:38 · 662 阅读 · 0 评论 -
localtime 和 localtime_r
locatime 为不可重入函数。。locatime_r 为可重入函数;例如int main (){ p = time( NULL );pend = p+1800;locatime( p);locatime( pend );sfrtime( date1, "%H。。。。“ , p );sfrtime( date2, "%H。。。原创 2014-01-20 10:38:33 · 868 阅读 · 0 评论 -
获取系统时间的各种格式。。
#if 0time_t timeNow;struct tm *p_tm;char *wday[]={(char *)"Sun",(char *)"Mon",(char *)"Tue",(char *)"Wed",(char *)"Thu",(char *)"Fri",(char *)"Sat"};char *month[] = { (char *)"Jan",(char *)"Fe原创 2014-01-13 15:54:38 · 677 阅读 · 0 评论 -
共享内存操作,mmap映射
shm_id=shm_open(argv[1],O_RDWR|O_CREAT,0644);/*创建共享内存区*/ftruncate(shm_id,100);/*调整共享内存区大小*/sem=sem_open(argv[1],O_CREAD,0644,1);/*创建信号量*/ptr=mmap(NULL,100,PROT_READ|PROT_WRITE,MAP_SHARED,s转载 2014-01-14 15:07:08 · 646 阅读 · 0 评论 -
共享内存
从表面上看,UNIX® 应用程序单独控制底层主机。它随时可以访问处理器,它的内存是神圣不可侵犯的,连接它的设备只为它服务。但是表面现象会骗人,这样有如君主一般的绝对地位只是幻想而已。UNIX 系统同时运行大量应用程序,有限的物理资源要在它们之间共享。处理器能力被划分为时间片,应用程序映像经常被换入和换出真实内存,设备访问由需求驱动,还受到访问权限的限制。尽管您的 shell 提示符不断闪烁,但是转载 2014-01-14 15:50:06 · 603 阅读 · 0 评论 -
bt peer通信协议报文格式
接下来协议的所有报文采用如下的结构:。length prefix(长度前缀)是一个4字节的大端(big-endian)值。message ID是单个十进制值。playload与消息相关。l keep-alive: keep-alive消息是一个0字节的消息,将length prefix设置成0。没有message ID和payload。如果peers在一个固定时间段内没有收到任何报文(k转载 2014-01-22 16:44:52 · 1833 阅读 · 0 评论 -
Linux 操作int64_t
# if __WORDSIZE == 32#define _INT_64_ "lld"#else#define _INT_64_ "ld"#endif然后输出。。。。printf("%"_INT_64_"\n", a);同样可以运用到对各种字符串的操作,如sscanf,或者sprintf等等。。。原创 2014-01-15 17:36:13 · 1638 阅读 · 0 评论 -
eclispe 跳转问题 找不到头文件
eclipse上配置好cdt后,新建一个简单的项目测试下,当写入头文件时,却出现如下错误提示:unresolved inclusion: 原因与解决:这是c/c++标准库未设置所致。解决方法如下。选中项目,依次操作:右键单击 -> properties -> C/C++ General -> Paths and Symbols -> Add... ->翻译 2014-01-15 12:21:59 · 1138 阅读 · 0 评论 -
bt torrent文件
BT源代码学习心得(四):种子文件的生成在知道种子文件采取的编码方式后,我们现在可以来看一个种子文件具体是如何生成的了。在BT中,生成种子文件的可执行模块是btmaketorrent.py(命令行模式)或者btmaketorrentgui.py(图形界面模式),通过分析,可以知道它们最终都将调用函数make_meta_files进行种子文件的生成,区别仅仅在于提供给这个函数转载 2014-01-23 18:47:04 · 1001 阅读 · 0 评论 -
peer handShake
Peer wire protocol (TCP)概述peer(端)协议使片(piece)的交换变得容易,片的描述请参考元信息文件。注意:原来的规范在描述peer协议时,也使用术语piece“(片)”,但是这不同于元信息文件里面的术语“piece(片)”,由于这个原因,在本规范中,将使用术语“块(block)”来描述peers(端)之间交换的数据。一个客户端(client)必须维持其转载 2014-01-24 15:34:44 · 1241 阅读 · 0 评论 -
位域的操作
位域简介有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几个不同的区域, 并说明每个区域的位数。每个域有一个域名,可以在程序中按域名进行操作。 这样就可以把几个不转载 2014-01-24 09:42:59 · 848 阅读 · 0 评论 -
linux md5运用。。。
#include#include#includeint main( int argc, char **argv ){MD5_CTX ctx;unsigned char *data="123";unsigned char md[16];char buf[33]={'\0'};char tmp[3]={'\0'};int i;MD5_Init(&ct原创 2014-01-16 18:11:56 · 474 阅读 · 0 评论 -
结构体字节对齐
#pragma pack( push,1 )struct_ A{int a;char b;}A;#pragma pack(pop)原创 2014-01-17 10:16:43 · 694 阅读 · 0 评论 -
makefile 书写
一、 三个基本概念(注:本文所有的测试都是在 Linux 环境下进行的) 在Makefile中,最重要的三个概念是:目标(target)、依赖关系(dependency)和命令(command)。目标是指要干什么,即运行make后生成什么;依赖是指明目标所依赖的其他目标;命令则告诉make如何生成目标,这三个概念是通过Makefile中的规则(rule)关联在一起的。转载 2015-04-20 15:17:32 · 531 阅读 · 0 评论