【问题标题】:How to call the 'read' system call with python [closed]如何使用 python 调用“读取”系统调用 [关闭]
【发布时间】:2014-08-22 05:32:12
【问题描述】:

我需要使用我的参数运行 linux 'read' 系统调用。有什么想法吗?

read(const char *path, char *buf, size_t size, off_t offset,struct fuse_file_info *fi)

我需要用我的参数调用上面的函数。

【问题讨论】:

  • 为什么需要调用read系统调用?你已经有文件句柄了吗?
  • 我正在为 FUSE 程序构建一个测试脚本,我需要检查“读取”是否正常工作。
  • 对已挂载文件系统的常规 Python open() 调用可以正常工作。如果您使用 Python 实现 FUSE 插件并且您正在构建一个单元测试,那么只需直接调用 Python 实现即可,而无需实际启动 FUSE 来驱动它。

标签: python linux python-2.7 system-calls fuse


【解决方案1】:

Python 将 the C stdlib read() function 公开为 os.read() function

os.read(fd, n)
从文件描述符 fd 中读取最多 n 个字节。返回包含读取的字节的字符串。如果已到达 fd 引用的文件末尾,则返回一个空字符串。

错误作为OSError 异常引发,errno 属性设置为整数,如 C read() 文档中所述。如果您想测试常量,可以使用errno module

【讨论】:

  • 谢谢,你知道我如何指定我想读取的标志吗?
  • @ifryed:“标志”是什么意思?这不是您可以传递给 C 级 read() 函数的参数。
  • @ifryed:您是否将 FUSE 插件实现的“读取”功能与系统读取调用混淆了?
  • 我想我确实把它们弄混了,我编辑了问题
  • 这确实是 not Linux read() 函数(我在答案中链接到手册页)。您基本上是在询问如何测试任意 API,使用您编写插件的任何用户空间语言进行编码。如果是 Python,则无需调用 C 函数
猜你喜欢
  • 2016-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-14
  • 1970-01-01
相关资源
最近更新 更多