zoukankan      html  css  js  c++  java
  • 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 下运行这个程序, 你可见到每个操作的成功或者 失败, 依赖是否当进行操作时有数据可用.

  • 相关阅读:
    数据挖掘笔试面试(7)
    数据挖掘笔试面试(6)
    数据挖掘笔试面试(5)
    数据挖掘面试笔试(4)
    数据挖掘面试(3)
    数据挖掘面试题(2)
    学生-课程-成绩表设计
    树状结构表设计
    性能优化(1+N,list与iterator,缓存,事务)
    对象的三种状态
  • 原文地址:https://www.cnblogs.com/fanweisheng/p/11141882.html
Copyright © 2011-2022 走看看