如何显示另一个线程拥有的文件?

2024-04-23 20:05:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试构建一个应用程序,它在GUI中显示日志文件的内容,日志文件由我通过子进程调用的单独程序编写。这个应用程序在Windows中运行,是一个我无法控制的二进制文件。另外,这个应用程序(Actel Designer,如果有人关心的话)会将其输出写入日志文件,而不管我如何重定向子进程的输出,因此使用管道作为输出似乎不是一个选项。底线是,我似乎被迫从一个日志文件读取的同时,另一个线程可能正在写入它。我的问题是,是否有一种方法可以让GUI以健壮的方式显示日志文件的最新内容?你知道吗

我试过以下方法:

  1. 当孩子 进程正在运行导致Python崩溃(我猜是因为 子线程正在写入文件,而我正在尝试读取其 内容)
  2. 接下来,我尝试打开日志文件名的文件句柄,然后使用GENERIC_READ和SHARED_READ | SHARED|WRITE | SHARED_DELETE调用子进程并从该文件读回。使用这种方法,文件将显示为空

谢谢你能提供的任何帮助-我不是一个专业的程序员,一个星期来我一直在为这个问题发愁。你知道吗


Tags: 文件方法程序应用程序内容read进程windows
1条回答
网友
1楼 · 发布于 2024-04-23 20:05:21

您应该注册文件更改通知,就像^{}那样(您可以通过执行strace tail -f logfile来了解系统调用它使用了什么)。你知道吗

pyinotify为这些文件更改通知提供Python接口。你知道吗

相关问题 更多 >