#!/usr/bin/pythonimportsysimportosiflen(sys.argv)==1:data=sys.stdin.read()else:try:fn=sys.argv[1]exceptIndexError:print"pleasefollowaargumentat%s"%__file__sys.exit()ifnotos.path.exists(fn):print"%sisnotexits."%fnsys.exit()fd=open(sys.argv[1])data=fd.read()c..
分类:
编程语言 时间:
2016-05-29 23:25:57
阅读次数:
197
1、设备控制理论 a、作用 大部分驱动程序除了需要提供读写设备的能力外,还需要具备控制设备的能力,比如:改变串口波特率。 b、设备控制--应用函数 在用户空间,使用ioctl系统调用来控制设备,其原型如下:int ioctl(int fd,unsigned long cmd,...),fd:要控制的 ...
分类:
其他好文 时间:
2016-05-29 00:41:30
阅读次数:
218
Poll就是监控文件是否可读的一种机制,作用与select一样。
应用程序的调用函数如下:
intpoll(structpollfd*fds,nfds_tnfds,inttimeout);
Poll机制会判断fds中的文件是否可读,如果可读则会立即返回,返回的值就是可读fd的数量,如果不可读,那么就进程就会休眠timeout这么..
分类:
其他好文 时间:
2016-05-28 23:29:41
阅读次数:
277
我们先来说说最重要的函数select这个函数,它的原型如下:intselect(intnfds,fd_set*readfds,fd_set*writefds,fd_set*exceptfds,structtimeval*timeout);select函数可以执行I/O多路转接。传给select的参数告诉内核:1.我们所关心的描述符2.对于每个描述符我们所关心的条..
分类:
其他好文 时间:
2016-05-26 19:06:27
阅读次数:
259
Linux的IO操作中数据的写函数int nwrite = write(int fd,void* buf ,int len)表示向fd文件描述符写入len个字节长度的数据报文,但是这并不能保证真正向内核缓冲区写入了len个数据。比如当内核socket缓冲区不足,小于len个字节,则会只写入其中的一部 ...
分类:
系统相关 时间:
2016-05-25 20:44:44
阅读次数:
271
select系统调用用于一次监控多个句柄(文件描述符)的状态变化的。程序会停在select处等待,直到被监视的句柄有一个或多个发生了状态改变。select函数原型:intselect(intnfds,fd_set*readfds,fd_set*writefd,fd_set*exceptfds,structtimeval*timeout);nfds:表示文件描述符集..
分类:
其他好文 时间:
2016-05-25 19:02:59
阅读次数:
320
一、理解select模型:理解select模型的关键在于理解fd_set,为说明方便,取fd_set长度为1字节,fd_set中的每个bit可以对应一个文件描述符fd。则1字节长的fd_set最长可以对应8个fd。(1)执行fd_setset;FD_ZERO(&set);则set用位表示是0000,0000。(2)若fd=5,执行FD_SET(fd,..
分类:
其他好文 时间:
2016-05-24 17:06:26
阅读次数:
132
#include <sys/socket.h> 1. int socket(int domain, int type, int protocol) socket: return fd domain: AF_INET(IPv4), AF_INET6(IPv6) type: SOCK_DGRAM(udp ...
分类:
其他好文 时间:
2016-05-24 00:07:58
阅读次数:
315
pipe用来创建管道,但是单个管道只能单向通信,一端用于读,而另一端用于写。如果要实现进程双向通信,必须创建一对管道。具体实现忽略。而socketpair则可以用来创建双向通信的管道。取决于底层实现,打开的还是一个文件,fd[0],fd[1],管道中f[0]读端,f[1]写端。#include<..
分类:
系统相关 时间:
2016-05-22 00:56:04
阅读次数:
247