gpt4 book ai didi

kill 命令后关闭文件

转载 作者:太空狗 更新时间:2023-10-29 11:07:35 26 4
gpt4 key购买 nike

我的程序中有一个无限循环,它将写入一个定义为 stdout 的文件,直到我终止它。因此,该文件永远不会关闭,也不会包含写入的内容。

有没有办法在 kill 命令后关闭文件?

我可以使用信号,比如

signal(SIGTERM, close(filename));

但我将如何处理所有终止信号?

最佳答案

你的问题被标记为“linux”,所以除非你缓冲你的写入并且不刷新缓冲区(例如,当使用 fwrite 时,你有时需要调用 fflush ),内容将被写入文件,因为它会在退出时正确关闭(即使退出是由信号强制的)。你不需要 fsync 除非你正在做一些必须在机器崩溃后幸存下来的事情(然后你需要知道你在做什么才能正确地获得崩溃语义)。

由于您在信号处理程序中想要执行的操作中提到了 close,因此您似乎没有缓冲您的写入,因此您不需要执行任何操作。成功调用 write 写入的数据将最终保存在文件中,除非您的机器崩溃(或者您的磁盘/文件系统在刷新缓冲区缓存之前损坏,不用担心)。事实上,当 write 在你的程序中返回时,数据可以被认为是写入了文件并且将被读取该文件的其他进程可见(一个异常(exception)是如果机器崩溃或很少有文件系统边缘情况,但这是一个复杂得多的主题)。

如果您在信号处理程序中所做的只是关闭您的文件描述符和_exit,那么您就不需要信号处理程序。

关于kill 命令后关闭文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39956047/

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