编程基础
会飞的幸运儿
这个作者很懒,什么都没留下…
展开
-
c的标记化结构初始化语法
在标准C中(C89)结构标准初始化是用{}来实始化,在C99的版本,采用了采用可读性更强的标记化实始化,这在LINUX内核和驱动很为常见。这是ISO C99的用法。C Primer Plus第五版中相关章节:已知一个结构,定义如下 struct book { char title[MAXTITL]; char author[MAXAUTL];原创 2015-01-31 23:06:54 · 375 阅读 · 0 评论 -
linuc之waitpid
waitpid系统调用在Linux函数库中的原型是:#include /* 提供类型pid_t的定义 */#include pid_t waitpid(pid_t pid,int *status,int options) 从本质上讲,系统调用waitpid和wait的作用是完全相同的,但waitpid多出了两个可由用户控制的参数pid和options,从而为我们编程提供原创 2015-08-18 23:43:53 · 586 阅读 · 0 评论 -
大小端模式的快速判断方法
大小端的问题剖析:嵌入式系统开发者应该对Little-endian和Big-endian模式非常了解。采用Little-endian模式的CPU对操作数的存放方式是 从低字节到高字节,而Big-endian模式对操作数的存放方式是从高字节到低字节。例如,16bit宽的数0x1234在Little-endian 模式CPU内存中的存放方式(假设从地址0x4000开始存放)为:转载 2015-07-05 22:33:03 · 590 阅读 · 0 评论 -
linux下的wchar_t
1. 默认情况下,windows 下的 wchar_t 占两个字节的长度,而 linux 下的 wchar_t 占四个字节的长度,可以在使用 gcc 编译程序的时候再后面跟上 -fshort-wchar 来解决这个问题。2. linux 下 wchar_t* 字符串的输出问题 —— 没有解决。#include#include #include #include void m原创 2015-07-05 19:40:31 · 1328 阅读 · 0 评论 -
ioctl之获取arp表项
ioctl是跟内核交互的一种方式,网络设计中广泛使用了ioctl函数来和内核协议栈进行交互。其原型为: int ioctl(int d,int request,...) #include #include #include #include #include #include #include #include #include int main(int ar原创 2015-07-12 18:51:51 · 2426 阅读 · 0 评论 -
fcntl设置FD_CLOEXEC标志作用
通过fcntl设置FD_CLOEXEC标志有什么用?close on exec, not on-fork, 意为如果对描述符设置了FD_CLOEXEC,使用execl执行的程序里,此描述符被关闭,不能再使用它,但是在使用fork调用的子进程中,此描述符并不关闭,仍可使用。//test1.c#include #include #include #include int main(转载 2015-07-12 22:12:51 · 627 阅读 · 0 评论 -
快速使用automake
1.hello.c#include #include #include #include "config.h" double get_epoch() { double sec; #ifdef HAVE_GETTIMEOFDAY struct timeval tv; gettimeofday(&原创 2015-07-26 13:07:13 · 363 阅读 · 0 评论 -
真正意义上的“随机”---c语言
通常可以利用系统时间来改变系统的种子值,即srand(time(NULL)),可以为rand函数提供不同的种子值,进而产生不同的随机数序列。例子:1.手动给种子#include/*用到了srand函数,所以要有这个头文件*/#include#define MAX 10 int main(void){int number[MAX] = {0};int i;unsign原创 2015-06-04 23:13:23 · 1007 阅读 · 0 评论 -
关于LINUX C中函数strtok使用要点
strtok的函数原型为char *strtok(char *s, char *delim),功能为“Parse S into tokens separated by characters in DELIM.If S is NULL, the saved pointer in SAVE_PTR is used as the next starting point. ” 翻译成汉语就是:作用于字符串转载 2015-06-04 23:15:01 · 589 阅读 · 0 评论 -
#pragma pack(push,1)与#pragma pack(1)的区别
这是给编译器用的参数设置,有关结构体字节对齐方式设置, #pragma pack是指定数据在内存中的对齐方式。#pragma pack (n) 作用:C编译器将按照n个字节对齐。#pragma pack () 作用:取消自定义字节对齐方式。#pragma pack (push,1) 作用:是指把原来对齐方式设置压原创 2015-05-10 22:22:08 · 469 阅读 · 0 评论 -
mysql+php(1)
MYSQLI_CLIENT_FOUND_ROWS option to ensure that my UPDATE statements will return non-zero even if they try to update a record with the same values that it already holds. 就是说:这个选项确保你得到的是最新的数据记录,并且返翻译 2015-03-30 22:47:02 · 331 阅读 · 0 评论 -
linux之wait函数
#include#includepid_t wait(int *status);进程一旦调用了wait就立即阻塞自己,由wait自动分析是否当前进程的某个子进程已经退出,如果让它找到了这样一个已经变成僵尸的子进程,wait就会收集这个子进程的信息,并把它彻底销毁后返回;如果没有找到这样一个子进程,wait就会一直阻塞在这里,直到有一个出现为止。参数status用来保存被收集原创 2015-08-18 23:28:08 · 451 阅读 · 0 评论