随笔分类 -  linux C基础

摘要:前言: 单链表是基础的数据结构, 分为有头结点和无头结点, 无头结点使用起来比较麻烦, 下面是有头结点的单链表操作, 重点是在于有头结点的单链表翻转操作。 代码:singlelist.c list.h 翻转单链表的函数: 使用了递归的思想, 可以把单链表看做只有左子树的树, 依次递归交换相邻两个树叶 阅读全文
posted @ 2017-11-17 15:34 会飞的小丑 阅读(1093) 评论(0) 推荐(0)
摘要:被信号中断的系统调用 1:EINTR 一般来说, 一个阻塞的慢系统调用(ex: read, write)被信号中断后, 有以下几种情况. 1.1 按照信号默认的处理方式, 如本进程直接退出 1.2 如果有信号处理函数, 系统调用返回-1(一般的错误返回), 且errno的值被系统置为EINTR(数值 阅读全文
posted @ 2017-10-23 13:53 会飞的小丑 阅读(1599) 评论(0) 推荐(0)
摘要:1:signal 函数 原型: sighandler_t signal(int signum, sighandler_t handler) typedef void (*sighandler_t)(int); 描述:signal函数用来在进程中指定当一个信号到达进程后该做什么处理,主要的两种方式有忽 阅读全文
posted @ 2017-06-29 17:31 会飞的小丑 阅读(1167) 评论(0) 推荐(0)
摘要:1:两类I/O函数的缓冲机制 1.1 系统调用(System call) 这类代表就是read/write等系统函数,它们是不带缓冲的,这里的缓冲指的是进程缓冲,在内核到磁盘之间还是有内核缓冲的。 1.2 标准I/O 这类代表就是fread/fwrite等函数,它们带有进程缓冲,可移植性强,最后还是 阅读全文
posted @ 2017-06-27 16:28 会飞的小丑 阅读(390) 评论(0) 推荐(1)
摘要:1:起因 最近在看代码时连续两次看到这三个函数的组合使用,为方便以后借鉴和回忆,先记录下来。 这三个函数的应用场景是这样的: 1.1 首先socketpair函数创建一对已连接套接字,返回的两个描述符(socketpair的第三个参数)都可以进行读写,但在单向通信的场景下一般将sv[0]作为读,sv 阅读全文
posted @ 2017-06-09 13:15 会飞的小丑 阅读(947) 评论(0) 推荐(0)
摘要:1:/dev/urandom和/dev/random是什么 这两个文件记录Linux下的熵池,所谓熵池就是当前系统下的环境噪音,描述了一个系统的混乱程度,环境噪音由这几个方面组成,如内存的使用,文件的使用量,不同类型的进程数量等等,刚开机的时候系统噪音会较小。在这两个设备的差异在于:/dev/ran 阅读全文
posted @ 2017-05-17 17:14 会飞的小丑 阅读(16563) 评论(0) 推荐(0)
摘要:1:getopt函数 getopt主要用于解析程序运行时所带的参数,原型如下: 一般的调用方式: 参数描述: 1:argc和argv就是main函数的两个参数 2:optstring参数是描述可支持选项的字符串,如果某个选项后面需要参数值,则选项后面有一个":" 3:optarg 正如2所述,它指向 阅读全文
posted @ 2017-05-17 14:22 会飞的小丑 阅读(1774) 评论(0) 推荐(0)
摘要:转:http://blog.sina.com.cn/s/blog_13b34cfee0102wjfo.html 在编写arp请求程序的时候,struct arpMsg 结构体的最后一个成员是u_char pad[18],这个成员是防止arp报文小于64字节而添加的,但为什么会有这个要求呢?这就要提到 阅读全文
posted @ 2017-04-19 17:12 会飞的小丑 阅读(6313) 评论(0) 推荐(0)
摘要:在Makefile中常常遇见这几种等操作,总结一下具体区别。 = 是最基本的赋值 := 是用右值覆盖左值 ?= 判断,如果左值没有被赋值过就赋以右值,否则,不做赋值动作 += 在左值后面连接右值(用空格隔开) = 和 := 的语法作用是一样的,只不过在Makefile文件中起效的时间不同造成了它们功 阅读全文
posted @ 2017-03-31 14:09 会飞的小丑 阅读(274) 评论(0) 推荐(0)
摘要:柔性数组:在C99定义的结构体中,最后一个元素允许是未知大小(或者是0)的数组,它不占用结构体任何内存,这个数组叫做柔性数组,柔性数组前必须至少有一个其它成员。 使用方式: 阅读全文
posted @ 2017-03-30 11:18 会飞的小丑 阅读(400) 评论(0) 推荐(0)
摘要:函数库是常用公共函数的集合,分为动态库和静态库。 静态库:程序编译时被链接到目标文件中,程序运行时就不需要此函数库的存在。(不推荐,会重复链接库) 动态库:程序编译时不链接到目标文件中,程序运行时才链接,所以需要函数库的存在。(推荐方式) 1:静态库 ./test/libhello/hello1.c 阅读全文
posted @ 2017-03-24 16:15 会飞的小丑 阅读(359) 评论(0) 推荐(0)
摘要:推荐博文: http://www.zsythink.net/archives/1199 http://www.cnblogs.com/migongci0412/p/5198370.html 总结: 1:iptables有五条链,四张表 2:链是表的容器,一条链上有几张表,表有优先级顺序 3:表是规则 阅读全文
posted @ 2017-03-14 18:01 会飞的小丑 阅读(218) 评论(0) 推荐(0)
摘要:1、查看当前控制台的打印级别 cat /proc/sys/kernel/printk 4 4 1 7 其中第一个“4”表示内核打印函数printk的打印级别,只有级别比他高的信息才能在控制台上打印出来,既 0-3级别的信息 2、修改打印 echo "新的打印级别 4 1 7" >/proc/sys/ 阅读全文
posted @ 2017-03-13 10:38 会飞的小丑 阅读(308) 评论(0) 推荐(0)
摘要:通过使用ioctl可以获得本机的一些信息,这里记录获得interface IP及MAC的过程。 1:ioctl 函数的作用是什么 man ioctl: DESCRIPTION The ioctl() function manipulates the underlying device paramet 阅读全文
posted @ 2017-02-25 15:04 会飞的小丑 阅读(998) 评论(0) 推荐(0)