linux测试 scullpipe 驱动
我们已经见到了 scullpipe 驱动如何实现阻塞 I/O. 如果你想试一试, 这个驱动的源码 可在剩下的本书例子中找到. 阻塞 I/O 的动作可通过打开 2 个窗口见到. 第一个可运行 一个命令诸如 cat /dev/scullpipe. 如果你接着, 在另一个窗口拷贝文件到
/dev/scullpipe, 你可见到文件的内容出现在第一个窗口.
测试非阻塞的动作是技巧性的, 因为可用于 shell 的传统的程序不做非阻塞操作. misc- progs 源码目录包含下面简单的程序, 称为 nbtest, 来测试非阻塞操作. 所有它做的是 拷贝它的输入到它的输出, 使用非阻塞 I/O 和在重试间延时. 延时时间在命令行被传递 被缺省是 1 秒.
int main(int argc, char **argv)
{
int delay = 1, n, m = 0; if (argc > 1)
delay=atoi(argv[1]);
fcntl(0, F_SETFL, fcntl(0,F_GETFL) | O_NONBLOCK); /* stdin */ fcntl(1, F_SETFL, fcntl(1,F_GETFL) | O_NONBLOCK); /* stdout */
while (1) {
n = read(0, buffer, 4096); if (n >= 0)
m = write(1, buffer, n);
if ((n < 0 || m < 0) && (errno != EAGAIN)) break;
sleep(delay);
}
perror(n < 0 ? "stdin" : "stdout");
exit(1);
}
如果你在一个进程跟踪工具, 如 strace 下运行这个程序, 你可见到每个操作的成功或者 失败, 依赖是否当进行操作时有数据可用.
相关文章
- Kali linux 渗透测试技术之搭建WordPress Turnkey Linux及检测WordPress 应用程序漏洞
- Linux根文件系统制作
- Linux安装 微信开发者工具(deepin linux ubt)
- STM32MP157 Linux系统移植开发篇16:Linux内核音频驱动移植
- Linux下修改引导器的工具:Boot-Repair
- linux学习-Linux系统启动过程
- 如何在linux中测试i2c slave模式驱动的功能?
- Linux的sudo命令
- 《树莓派学习指南(基于Linux)》——本章小结
- linux 在 scull 中使用旗标
- 查询红帽linux/Oracle Linux的发行版本的方法
- 【嵌入式Linux驱动开发】十二、一文带你了解Linux开发中的中断
- 【嵌入式Linux驱动开发】六、platform 平台驱动模型之总线 - 设备 - 驱动
- 【正点原子MP157连载】 第七章 TF-A初探-摘自【正点原子】【正点原子】STM32MP1嵌入式Linux驱动开发指南V1.7
- 【正点原子MP157连载】第四十二章 Linux RTC驱动实验-摘自【正点原子】STM32MP1嵌入式Linux驱动开发指南V1.7
- 【正点原子MP157连载】第十九章 Buildroot根文件系统构建-摘自【正点原子】STM32MP1嵌入式Linux驱动开发指南V1.7
- 【正点原子Linux连载】第二十九章 LCD背光调节实验 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0
- 【正点原子Linux连载】第十三章 高级I/O-摘自【正点原子】I.MX6U嵌入式Linux C应用编程指南V1.1
- 【正点原子Linux连载】第九章I.MX6U启动方式详解--摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0
- Linux内核project导论——linux学习和职业曲线(刚開始学习的人,中级,高级都可參考)
- 在U盘上安装Linux系统解决方案
- LR杂记 - Linux的系统监控工具vmstat详细说明
- 【Linux】Linux下跟踪记录每个用户对主机服务器进行的操作