捕获正在写入打开文件描述符

时间:2018-05-07 16:45:14

标签: c file-handling file-descriptor fdopen

是否可以编写一个程序,该程序能够使用其他应用程序的打开文件描述符,只是传递其内容而不进行任何转换?

让我们说App A对磁盘上的某个文件有一个开放FD,它正在写入数据。

我希望能够以某种方式访问​​开放的FD,以便随时App A将数据写入该文件,我可以将该信息写入其他对该操作感兴趣的应用程序。< / p>

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

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

1 个答案:

答案 0 :(得分:1)

strace有一个选项可以完成您想要的主要部分。

       -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.
  • 如果您的应用 A 已在运行:public function postIssue(Request $request) { $this->validate($request, [ 'rollno' => 'required|min:7', 'bookno' => 'required|numeric', ]); $roll = $request->input('rollno'); $bookno = $request->input('bookno'); $student = Student::where('roll_no','=',$roll); $book = Book::where('book_id','=',$bookno); $book->student_id = $student->id; $book->save(); return view('book.issue')->with('msg','Book Issued'); }
  • 如果您的应用 A 尚未启动:"Undefined property: Illuminate\Database\Eloquent\Builder::$id"

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