gpt4 book ai didi

linux - linux中文件的原子读取和截断

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:32:05 24 4
gpt4 key购买 nike

我正在创建一个进程调度程序,所有进程都像 ./program > out.txt 一样启动。

当程序运行并产生输出时,如何读取所有数据并自动截断文件,即保证在截断文件之前的读取操作之后不会写入任何数据。

  • 我无法修改调度命令或程序。然而,数据收集器知道数据生产者进程 PID,并且允许数据收集器控制/暂停该进程。

  • 所有“读取所有数据”是指所有刷新的数据。如果我可以强制从外部刷新管道,那将很有帮助,请写下,但主要问题是如何确保在读取和截断操作之间永远不会刷新未刷新/缓冲的管道数据。

    <

最佳答案

你可以暂停和继续一个过程

kill -STOP $pid
kill -CONTINUE $pid

但是,我不认为 kill -STOP $pid 是同步的,所以你应该循环等待直到进程改变状态(在 /proc 或者通过 ps).

此外,由于 PID 回收,上述操作本质上是活泼的(您可能会遇到一个意外的进程),除非您从 $pid 的父级以 pid 是这样的方式创建它们在您完成 kill 调用之前不会收割(交互式 shell 在 SIGCHLD 处理程序中自动收割 pids)。

关于linux - linux中文件的原子读取和截断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56505049/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com