C 捕获写入打开文件描述符的数据

C 捕获写入打开文件描述符的数据,c,file-handling,file-descriptor,fdopen,C,File Handling,File Descriptor,Fdopen,是否有可能编写一个程序,它能够获取另一个应用程序打开的文件描述符,并且只传递它们的内容而不进行任何转换 假设应用程序A有一个打开的FD,指向它正在写入数据的磁盘上的某个文件 我希望能够以某种方式访问开放的FD,这样每当应用程序A将数据写入该文件时,我就可以将写入的数据广播到对该操作感兴趣的其他应用程序 我希望能够多路复用开放FD上的读/写操作 一个更具体的例子; 我有一个midi键盘和一些合成器,我希望能够打开midi键盘文件描述符,并将所有传入的写入操作传递给感兴趣的0-N合成器。有一个选项,

是否有可能编写一个程序,它能够获取另一个应用程序打开的文件描述符,并且只传递它们的内容而不进行任何转换

假设应用程序A有一个打开的FD,指向它正在写入数据的磁盘上的某个文件

我希望能够以某种方式访问开放的FD,这样每当应用程序A将数据写入该文件时,我就可以将写入的数据广播到对该操作感兴趣的其他应用程序

我希望能够多路复用开放FD上的读/写操作

一个更具体的例子; 我有一个midi键盘和一些合成器,我希望能够打开midi键盘文件描述符,并将所有传入的写入操作传递给感兴趣的0-N合成器。

有一个选项,可以完成您需要的主要部分

-e write=set Perform a full hexadecimal and ASCII dump of all the data written to file descriptors listed in the spec- ified set. For example, to see all output activity on file descriptors 3 and 5 use -e write=3,5. Note that this is independent from the normal tracing of the write(2) system call which is controlled by the option -e trace=write. -e write=set 对所有数据执行完整的十六进制和ASCII转储 写入规范中列出的文件描述符的数据- 一套。例如,要查看所有输出活动 在文件描述符3和5上使用-e write=3,5。注 这独立于对 由控制的写入(2)系统调用 选项-e trace=write。
  • 如果您的应用程序A已在运行:
    strace-ewrite-ewrite=FD-pPID
  • 如果您的应用程序A尚未启动:
    strace-ewrite-ewrite=FD A

将生成的十六进制转储转换回原始数据并将其提供给其他应用程序并不重要。

这取决于操作系统;你想要哪个操作系统?是的,这是Linux,Unix而不是windows。