我有一个在Linux机器上运行的服务,它创建一个命名管道字符设备特殊文件,我想编写一个Python3程序,通过编写文本命令和从管道设备读取文本回复来与服务进行通信.我没有该服务的源代码.
我可以使用os.open(named_pipe_pathname,os.O_RDWR),我可以使用os.read(…)和os.write(…)来读取和写入它,但这很痛苦,因为我必须写我自己的代码在字节和字符串之间转换,我必须编写自己的readline(…)函数等.
我宁愿使用Python3 io对象来读取和写入管道设备,但我能想到的每一种方法都会返回相同的错误:
io.UnsupportedOperation: File or stream is not seekable.
例如,如果我尝试打开(路径名,“r”),我会收到该消息,如果我尝试fd = os.open(…)后跟os.fdopen(fd,“r”,我得到相同的消息) …).
问:Python3程序在命名管道字符设备上写入和读取文本的首选方法是什么?
编辑:
哎呀!我假设我正在处理一个命名管道,因为该服务的文档将其描述为“管道”,因为它在用户模式服务运行之前不会出现在文件系统中.但是,Linux文件实用程序说它实际上是一个字符设备特殊文件.