
linux C
文章平均质量分 64
zhangxiong2532
这个作者很懒,什么都没留下…
展开
-
内核经典数据结构list 剖析
list_head刨析,附测试程序原创 2023-02-16 17:15:20 · 612 阅读 · 2 评论 -
socket编程注意事项
1 进程间通信的方式常用的进程间通信的方式有:管道(pipe),命名管道(named pipe),信号,消息队列,共享内存,信号量等,这些通信基本是本机进程之间的,在网络中的主机之间是无法适用的。2 套接字socket套接字的出现主要解决网络间各主机间进程通信的问题,换而言之现在所以网络中的进程通信都采用socket方式。1.2.1 套接字的分类SOCK_STREAM流套接字,提供面向连接、可靠的数据传输服务,数据按字节流、按顺序收发,保证在传输过程中无丢失、无冗余。TCP协议支持该套接字原创 2022-04-07 14:17:44 · 2412 阅读 · 0 评论 -
简单的C语言事件接口,框架接口的实现
一个C语言的简单事件接口实现,这里用的是结构体数组,请直接看代码,代码有详细注释。 #include <stdio.h>#include <string.h>#define CMDSIZE 100typedef int (*ptrFun)(int num);typedef struct Command_t{ const cha...原创 2018-11-06 18:46:03 · 3020 阅读 · 2 评论 -
获取命令行参数,getopt
获取命令行参数,getopt原创 2016-01-14 15:58:44 · 619 阅读 · 0 评论 -
strcpy与memcpy以及strncpy
1. strcpy函数 strcpy提供了字符串的复制。即strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符。 函数原型及实现:[c-sharp] view plain copychar* strcpy(char* strDst, const char* strSrc) {转载 2016-03-11 16:05:05 · 436 阅读 · 0 评论 -
结构体字节对齐,pragma pack,__attribute__(packed)
程序编译器对结构的存储的特殊处理确实提高CPU存储变量的速度,但是有时候也带来了一些麻烦,我们也屏 蔽掉变量默认的对齐方式,自己可以设定变量的对齐方式。例如我们设置结构体的对齐方式:struct student{int age;char c;};对于以上结构体,默认用sizeof输出大小为8字节,默认的字节对齐方式是4,当然我们也可以设置他的对齐 方式,如下:...原创 2016-03-08 14:46:32 · 15526 阅读 · 2 评论 -
随机函数 rand,srand,random,srandom 的区别与使用
函数定义: int rand(void); 返回 0 ------- RAND_MAX 之间的一个 int 类型整数,该函数为非线程安全函数。并且生成随机数的性能不是很好,已经不推荐使用。 void srand(unsigned int seed); 设置种子值,一转载 2016-03-07 17:36:06 · 1358 阅读 · 0 评论 -
linux下与实践相关的结构体 struct timeb,struct timeval ,struct timezone,struct timespec,struct tm 等
1、时间类型。Linux下常用的时间类型有4个:time_t,struct timeb, struct timeval,struct timespec,clock_t, struct tm.(1) time_t是一个长整型,一般用来表示用1970年以来的秒数.该类型定义在中.一般通过 time_t time = time(NULL); 获取.(2) struct t转载 2016-03-07 17:34:33 · 7024 阅读 · 0 评论 -
linux下gettimeofday()的使用
一.gettimeofday()函数的使用方法:1.简介:在C语言中可以使用函数gettimeofday()函数来得到时间。它的精度可以达到微妙2.函数原型:#includeint gettimeofday(struct timeval*tv,struct timezone *tz )3.说明:gettimeofday()会把目前的时间用转载 2016-03-07 17:30:08 · 1062 阅读 · 1 评论 -
getopt_long 解析命令行参数(--help)
大家可能用到过getopt函数来解析命令行参数,如./a.out -a xx -b xx .....,这些被称为短参数,有时我们在编译一些开源库的时候会见到这样解析命令行参数,如--help ,--DIR /home/test,这些则为长参数,而长参数的解析可以用getopt_long函数,下面我们仔细来说说。头文件:#include函数原型:int getopt_long(int原创 2016-01-15 11:39:09 · 1093 阅读 · 0 评论 -
poll解析 ,poll和select区别
poll()函数:这个函数是某些Unix系统提供的用于执行与select()函数同等功能的函数,下面是这个函数的声明:#include int poll(struct pollfd fds[], nfds_t nfds, int timeout);参数说明:fds:是一个struct pollfd结构类型的数组,用于存放需要检测其状态的Socket描述符;每当调用这转载 2016-01-14 16:26:58 · 770 阅读 · 0 评论 -
linux下设置代理服务器
代理服务器,顾名思义就是局域上不能直接上网的机器将上网请求(比如说,浏览某个主页)发给能够直接上网的代理服务器,然后代理服务器代理完成这个上网请求,将它所要浏览的主页调入代理服务器的缓存;然后将这个页面传给请求者。这样局域网上的机器使用起来就像能够直接访问网络一样。 并且,代理服务器还可以进行一些网站的过滤和控制的功能,这样就实现了我们使用它的初衷——控制和节省上网费用。原创 2015-09-21 12:30:06 · 27706 阅读 · 3 评论 -
CentOS7/RHEL7 systemd详解
CentOS7/RHEL7 systemd详解 目录1. 为什么是systemd(1) 关于Linux服务管理(2) SysV init的优缺点(3) UpStart的改进(4) systemd的诞生(5)为什么systemd能做到启动很快2. SysV init介绍(1) 什么是SystemV(2)SysV init的运行级别(3)SysV转载 2015-10-22 17:20:12 · 1384 阅读 · 0 评论 -
关于创建线程后CPU使用率100%的问题
CPU使用100的问题之一原创 2016-01-08 09:56:02 · 4153 阅读 · 0 评论 -
CURL函数简单介绍,CURL简单用法,初识CURL
libcurl是一个跨平台的网络协议库,支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议。转载 2016-01-31 12:13:31 · 5208 阅读 · 1 评论 -
fwrite,fflush,你不知道的事!
正常调用fwrite函数后数据没有写入文件的原因之一。原创 2016-01-29 18:51:16 · 23478 阅读 · 4 评论