由于fork调用之后,父进程中打开的文件描述符在子进程中仍然保持打开,所以文件描述符可以很方便地从父进程传递到子进程。需要注意的是,传递一个文件描述符并不是传递一个文件描述符的值,而是要在接收进程中创建一个新的文件描述符,并且该文件描述符和发送进程中被传递的文件描述符指向内核中相同的文件表项。 在L ...
分类:
系统相关 时间:
2019-04-29 21:21:14
阅读次数:
219
先引入一个例子,该程序的目的是子进程向父进程传递文件描述符,并通过该文件描述符读取buf。 编译测试,发现结果不正确,通过ps aux查看到程序卡在了等待管道写数据,原因是卡在了第二个read读取buf处。我们再来看一下程序(见注释): 所以我们必须借助内核传递文件描述符,sendmsg和recvm ...
分类:
系统相关 时间:
2019-04-25 22:46:06
阅读次数:
844
需求:利用 cron,让脚本在终端运行,以查看程序输出;或运行图形应用,如 gedit, xclock cron 运行于非交互 shell,没有附属的终端,也独立于图形桌面。所以,计划任务将运行于后台,然而,我的程序里有很多操作文件描述符的地方,如打开串口,建立 socket,全部出错。我不知道原因 ...
分类:
其他好文 时间:
2019-04-23 21:16:33
阅读次数:
234
今天测试socket服务器同一时间处理多个客户端连接问题,第一次测试1000个的时候没问题,第二次测试1000个服务器accept的时候就报错了 看来打开的socket数目已经超过单进程最大文件描述符限制了 查看一下系统设置 可以看到 ...
分类:
其他好文 时间:
2019-04-22 16:42:31
阅读次数:
158
查看代码,有5个stage,一一解决掉就能愉快看到flag了。 第一个stage: 解决方案: 第二个stage: 解决方案: 使用了os.pipe()函数功能,os.pipe()用于创建一个管道,返回一对文件描述符(r,w)分别为读和写。 第三个stage: 解决方案: 第四个stage: 解决方 ...
分类:
其他好文 时间:
2019-04-22 00:47:50
阅读次数:
160
大部分驱动程序除了需要提供读写设备的能力外,还需要具备控制设备的能力。比如: 改变波特率 1 设备控制应用函数 在用户空间,使用ioctl系统调用来控制设备,原型如下: int ioctl(int fd,unsigned long cmd,...) fd: 要控制的设备文件描述符 cmd: 发送给设 ...
分类:
其他好文 时间:
2019-04-18 14:49:35
阅读次数:
118
删除、覆盖文件恢复:右键文件--Local History 查到被删的代码,idea自动保存的。 即使文件目录文件被删了,在同地方新建一个同名空文件,也可以通过Local History找回来代码。 ...
分类:
其他好文 时间:
2019-04-18 09:35:48
阅读次数:
230
概要: 打开、创建和关闭文件 读写文件 文件定位 获取文件信息 打开、创建和关闭文件 函数原型: flags和mode都是一组掩码的合成值,flags表示打开或创建的方式,mode表示文件的访问权限。 flags 的选项: O_CREAT参数: open()函数出错时返回 1, 创建成功时返回未使用 ...
分类:
系统相关 时间:
2019-04-12 23:12:47
阅读次数:
212
读写文件通常都是IO操作,Python内置了读文件的函数,用法和C是兼容的。 读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是有操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘,所以,读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),然后,通过操作系统提供的接口从这个 ...
分类:
其他好文 时间:
2019-04-05 16:55:38
阅读次数:
183
Linux IO多路复用 poll 之前曾经提到过 select poll 跟select类似,poll改进了select的一个确定,就是poll没有监听上限 不过poll还是需要遍历以及频繁的把数组拷贝到内核空间,在监听较多文件描述符的时候性能会下降 传递的三个参数 fds:结构体数组 nfds: ...
分类:
系统相关 时间:
2019-04-05 12:19:33
阅读次数:
204