在另一个进程将行写入文件之前,应该如何阻止一个进程?

用户1559897

我有一个进程(agxp)接收数据并将其写入文件,而另一个进程将数据发送至另一个进程。

当agxp启动时,它应该立即产生一些输出。我希望主进程一直阻塞,直到它看到agxp在文件中输出的第一行为止。

我通过比较文件的统计信息来检查第一行是否已写入文件,但它们始终相同。所以我陷入了while循环中。为什么会这样?

        rvListen_AGX =  "tibrvlisten -service " + agxService  + " -network " + agxNetwork + " -daemon " + domain

        agxf = open(self.AGX_logFileName, 'w')
        agxstat = os.stat(self.AGX_logFileName)
        agxp = subprocess.Popen(rvListen_AGX.split(), stdout = agxf, bufsize=0)


        while os.stat(self.AGX_logFileName) == agxstat:
            print agxstat
            print os.stat(self.AGX_logFileName)
            stxf.flush()
            sleep(0.1)
杰夫斯

要等到子进程向其stdout中写入一行并将子stdout保存到文件中,请执行以下操作:

import shutil
from subprocess import Popen, PIPE
from threading import Thread

def copy_and_close(source, destination):
    with source, destination:
        shutil.copyfileobj(source, destination)

agx_cmd = ("tibrvlisten -service {agxService} -network {agxNetwork} "
           "-daemon {domain}".format(**vars())).split()
agx_process = Popen(agx_cmd, stdout=PIPE, bufsize=1)
agx_file = open(self.AGX_logFileName, 'wb')
agx_file.write(agx_process.stdout.readline()) # block until a line is read
Thread(target=copy_and_close, args=[agx_process.stdout, agx_file]).start()
# do other things here..
rc = agx_process.wait()

如果在agx_process运行时不需要执行其他操作,则可以调用copy_and_close()主线程。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

一个进程如何阻止另一个进程(该进程产生)?

来自分类Dev

如何读取另一个进程正在写入的文件

来自分类Dev

如何阻止多个进程创建另一个进程的多个实例?

来自分类Dev

在移至另一个进程之前如何解决异步进程?

来自分类Dev

删除文件,而另一个进程仍在写入文件

来自分类Dev

当另一个进程正在使用std :: fstream写入文件时从文件中读取

来自分类Dev

如何在Groovy中读取(prinln)文件,该文件是另一个进程写入的文件

来自分类Dev

Dart:如何通过流将数据从一个进程传递到另一个进程

来自分类Dev

file_put_contents将数据附加到另一个进程正在写入的文件上

来自分类Dev

在另一个进程正在写入时清空文件

来自分类Dev

将File保留为Socket并等待直到从另一个进程写入结束

来自分类Dev

删除被另一个进程锁定的文件

来自分类Dev

另一个进程使用的文件C#

来自分类Dev

另一个进程使用的文件C#

来自分类Dev

释放另一个进程正在使用的文件

来自分类Dev

打开另一个进程正在使用的文件

来自分类Dev

主机文件在另一个进程中打开

来自分类Dev

文件已被另一个进程使用

来自分类Dev

另一个进程使用的文件 - StreamWriter

来自分类Dev

将一个日志文件截断为零,同时另一个进程不断向该文件写入

来自分类Dev

如何在脚本中确定当前是否正在由另一个进程写入文件?

来自分类Dev

如何在脚本中确定当前是否正在由另一个进程写入文件?

来自分类Dev

如何杀死另一个用户的后台进程?

来自分类Dev

如何获取另一个进程MessageBox的消息?

来自分类Dev

如何杀死另一个用户的进程?

来自分类Dev

如何监视另一个程序/进程

来自分类Dev

Python:如何从另一个进程读取变量?

来自分类Dev

如何根据另一个进程配置ssis?

来自分类Dev

php FTP文件:如何检查文件是否被另一个进程打开

Related 相关文章

  1. 1

    一个进程如何阻止另一个进程(该进程产生)?

  2. 2

    如何读取另一个进程正在写入的文件

  3. 3

    如何阻止多个进程创建另一个进程的多个实例?

  4. 4

    在移至另一个进程之前如何解决异步进程?

  5. 5

    删除文件,而另一个进程仍在写入文件

  6. 6

    当另一个进程正在使用std :: fstream写入文件时从文件中读取

  7. 7

    如何在Groovy中读取(prinln)文件,该文件是另一个进程写入的文件

  8. 8

    Dart:如何通过流将数据从一个进程传递到另一个进程

  9. 9

    file_put_contents将数据附加到另一个进程正在写入的文件上

  10. 10

    在另一个进程正在写入时清空文件

  11. 11

    将File保留为Socket并等待直到从另一个进程写入结束

  12. 12

    删除被另一个进程锁定的文件

  13. 13

    另一个进程使用的文件C#

  14. 14

    另一个进程使用的文件C#

  15. 15

    释放另一个进程正在使用的文件

  16. 16

    打开另一个进程正在使用的文件

  17. 17

    主机文件在另一个进程中打开

  18. 18

    文件已被另一个进程使用

  19. 19

    另一个进程使用的文件 - StreamWriter

  20. 20

    将一个日志文件截断为零,同时另一个进程不断向该文件写入

  21. 21

    如何在脚本中确定当前是否正在由另一个进程写入文件?

  22. 22

    如何在脚本中确定当前是否正在由另一个进程写入文件?

  23. 23

    如何杀死另一个用户的后台进程?

  24. 24

    如何获取另一个进程MessageBox的消息?

  25. 25

    如何杀死另一个用户的进程?

  26. 26

    如何监视另一个程序/进程

  27. 27

    Python:如何从另一个进程读取变量?

  28. 28

    如何根据另一个进程配置ssis?

  29. 29

    php FTP文件:如何检查文件是否被另一个进程打开

热门标签

归档