摘要: 转载:http://liulixiaoyao.blog.51cto.com/1361095/533469/今天跟人谈到socketpair的问题,晚上回来写了个程序验证下自己的猜测! 先说说我的理解:socketpair创建了一对无名的套接字描述符(只能在AF_UNIX域中使用),描述符存储于一个二元数组,eg. s[2] .这对套接字可以进行双工通信,每一个描述符既可以读也可以写。这个在同一个进程中也可以进行通信,向s[0]中写入,就可以从s[1]中读取(只能从 s[1]中读取),也可以在s[1]中写入,然后从s[0]中读取;但是,若没有在0端写入,而从1端读取,则1端的读取操作会阻塞,即. 阅读全文
posted @ 2014-03-21 13:31 dolinux 阅读(1722) 评论(0) 推荐(1)
摘要: 转载:http://blog.chinaunix.net/uid-20754793-id-177772.html有一个单链表,其中可能有一个环,也就是某个节点的next指向的是链表中在它之前的节点,这样在链表的尾部形成一环。问题:1、如何判断一个链表是不是这类链表?2、如果链表为存在环,如果找到环的入口点?思考:一、判断链表是否存在环,我们可以用循环实现(如算法二提到的),但是那样效率较低为:设置两个指针(fast, slow),初始值都指向头,slow每次前进一步,fast每次前进二步,如果链表存在环,则fast必定先进入环,而slow后进入环,两个指针必定相遇。(当然,fast先行头到尾部 阅读全文
posted @ 2014-03-21 11:27 dolinux 阅读(337) 评论(0) 推荐(0)
摘要: 转载:http://blog.chinaunix.net/uid-20754793-id-177773.html判断两个链表是否相交:(假设两个链表都没有环)1、判断第一个链表的每个节点是否在第二个链表中2、把第二个链表连接到第一个后面,判断得到的链表是否有环,有环则相交3、先遍历第一个链表,记住最后一个节点,再遍历第二个链表,得到最后一个节点时和第一个链表的最后一个节点做比较,如果相同,则相交如何判断一个单链表是有环的?(注意不能用标志位,最多只能用两个额外指针)一种O(n)的办法就是(用两个指针,一个每次递增一步,一个每次递增两步,如果有环的话两者必然重合,反之亦然):bool check 阅读全文
posted @ 2014-03-21 11:23 dolinux 阅读(4758) 评论(0) 推荐(0)
摘要: 转载:http://blog.chinaunix.net/uid-20754793-id-177774.html今天在写字符驱动验证程序的时候要用到ioctl函数,其中有一个cmd参数,搞了半天也不了解是什么意思,那个cmd还有什么命令码了什么的,还好google下,觉得这篇文章写的不错,就转来看看:在驱动程序里, ioctl() 函数上传送的变量 cmd 是应用程序用于区别设备驱动程序请求处理内容的值。cmd除了可区别数字外,还包含有助于处理的几种相应信息。 cmd的大小为 32位,共分 4 个域:bit31~bit30 2位为 “区别读写” 区,作用是区分是读取命令还是写入命令。bi... 阅读全文
posted @ 2014-03-21 11:21 dolinux 阅读(6265) 评论(0) 推荐(2)
摘要: 在gcc手册中找到了有关的解释:unused:This attribute, attached to a function, means that the function is meant to be possibly unused. GCC will not produce a warning for this function.===============================================================================used: This attribute, attached to a function, means . 阅读全文
posted @ 2014-03-21 10:52 dolinux 阅读(647) 评论(0) 推荐(0)
摘要: 最近在看一些源代码,遇到了一些使用__attribute__修饰函数和变量的属性方面的代码,不是太了解,很是汗颜,再此做个总结:GCC使用__attribute__关键字来描述函数,变量和数据类型的属性,用于编译器对源代码的优化。描述函数属性的几个重要的关键字:void noreturnfun() __attribute__((noreturn));//函数不会返回。void centon() __attribute__((alias("__centon")));//设置函数别名,函数是__cencon,别名是centon.void main_enter() __attri 阅读全文
posted @ 2014-03-21 10:43 dolinux 阅读(3550) 评论(0) 推荐(0)