摘要: import urllibimport urllib2import cookielibimport jsonimport reimport getpassclass Login_kp: def __init__(self): cj = cookielib.CookieJar() self.opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) urllib2.install_opener(self.opener) self.opener.addheaders = ... 阅读全文
posted @ 2012-06-09 21:35 KingsLanding 阅读(1000) 评论(0) 推荐(0) 编辑
摘要: 通过 前一篇文章的介绍我们队等待队列有了一个比较具体的认识,本文将来分析一下等待队列是如何睡眠一个进程和如何唤醒一个进程的。使用等待队列前通常先定义一个等待队列头:static wait_queue_head_t wq ,然后调用wait_event_*函数将等待某条件condition的当前进程插入到等待队列wq中并睡眠,一直等到condition条件满足后,内核再将睡眠在等待队列wq上的某一进程或所有进程唤醒。这里我们来分析一下唤醒的过程,举比较常用的wait_event_interruptible来分析:/** * wait_event_interruptible - sleep unt 阅读全文
posted @ 2012-06-09 10:23 KingsLanding 阅读(6870) 评论(2) 推荐(4) 编辑
摘要: 在Linux内核中等待队列有很多用途,可用于中断处理、进程同步及定时。我们在这里只说,进程经常必须等待某些事件的发生。等待队列实现了在事件上的条件等待: 希望等待特定事件的进程把自己放进合适的等待队列,并放弃控制全。因此,等待队列表示一组睡眠的进程,当某一条件为真时,由内核唤醒它们。等待队列由循环链表实现,其元素包括指向进程描述符的指针。每个等待队列都有一个等待队列头(wait queue head),等待队列头是一个类型为wait_queue_head_t的数据结构(1)定义等待队列头(相关内容可以在linux/include/wait.h中找到)等待队列头结构体的定义:struct __w 阅读全文
posted @ 2012-06-09 10:16 KingsLanding 阅读(15712) 评论(2) 推荐(7) 编辑