http://blog.csdn.net/petershina/article/details/7946615一旦,我们建立好了tcp连接之后,我们就可以把得到的fd当作文件描述符来使用。由此网络程序里最基本的函数就是read和write(int fd, const void*buf,size_t ...
分类:
其他好文 时间:
2015-04-04 23:46:17
阅读次数:
178
write对应的系统调用是sys_write,代码如下:asmlinkage ssize_t sys_write(unsigned int fd, const char * buf, size_t count)
{
ssize_t ret;
struct file * file;
ret = -EBADF;
file = fget(fd);
if (file) {
if (file...
分类:
系统相关 时间:
2015-04-03 19:26:28
阅读次数:
228
大部分驱动除了需要具备读写设备的能力之外,还需要具备对硬件控制的能力。
一、在用户空间,使用ioctl系统调用来控制设备,原型如下:
int ioctl(int fd,unsigned long cmd,...);
/*
fd:文件描述符
cmd:控制命令
...:可选参数:插入*argp,具体内容依赖于cmd
*/
用户程序所作的只是通过命令码告诉驱动程序它想做什么,至于怎么解释这些...
分类:
其他好文 时间:
2015-04-03 11:18:15
阅读次数:
210
打开文件的系统调用是open(),在内核中通过sys_open()实现,假设filename是"/usr/local/hello.c",且假设这个文件已经存在,代码如下:asmlinkage long sys_open(const char * filename, int flags, int mode)
{
char * tmp;
int fd, error;
#if BITS_PER_L...
分类:
系统相关 时间:
2015-04-03 11:15:40
阅读次数:
173
在阅读本文之前,我假设你已经对Linux系统下的硬盘、光盘的设备命令规则有所了解,比如sda和sda1的关系,以及hda、sda、fd、cdrom等设备。===1 我把U盘插到USB口上了,下一步我该如何做才能查看U盘里的内容?我不能确定你的Linux系统会不会自动加载。所以,你应该先去/media...
分类:
其他好文 时间:
2015-04-01 09:26:48
阅读次数:
128
note:epoll使用mmap加速内核与用户空间的消息传递。 这点实际上涉及到epoll的具体实现了。无论是select,poll还是epoll都需要内核把FD消息通知给用户空间,如何避免不必要的内存拷贝就 很重要,在这点上,epoll是通过内核于用户空间mmap同一块内存实现的。
分类:
其他好文 时间:
2015-03-31 21:58:40
阅读次数:
104
busybox_bin=/sbin/busybox# 获取PIPEget_outfd(){ if $busybox_bin ls -l /proc/self/fd/21 | $busybox_bin grep -q 'pipe'; then echo 21 else ...
分类:
移动开发 时间:
2015-03-31 21:44:40
阅读次数:
155
MMAP函数#include void *mmap(void *start, size_t length, int prot, int flags, int fd, off_t offsize);mmap()用来将某个文件内容映射到内存中,对该内存区域的存取即是直接对该文件内容的读写。addr参数来...
分类:
其他好文 时间:
2015-03-30 22:58:39
阅读次数:
208
lsof 拥有更多的功能# lsof -i 看系统中有哪些开放的端口,哪些进程、用户在使用它们,比 netstat -lptu 的输出详细。# lsof -i 4 查看IPv4类型的进程COMMAND PID USER FD TYPE DEVICE SIZE NODE NAMEexim4 2213 ...
分类:
其他好文 时间:
2015-03-30 18:32:29
阅读次数:
126