C 从kill中避免文件损坏问题

C 从kill中避免文件损坏问题,c,linux,C,Linux,我有一个持续运行的进程(wlescan_dump),其输出通过管道传输到程序(process_dump)。process_dump是一个用C编写的可执行文件,它不断地写入文件: sudo wlescan_dump | process_dump 现在,如果我想以编程方式终止这两个进程(wlescan_dump和process_dump),我该如何以干净的方式完成呢?两个进程的kill-15是否足够?我主要担心的是避免文件损坏,并确保在杀死前完成进程_dump中挂起的文件写入 Kill wles

我有一个持续运行的进程(wlescan_dump),其输出通过管道传输到程序(process_dump)。process_dump是一个用C编写的可执行文件,它不断地写入文件:

sudo wlescan_dump | process_dump 

现在,如果我想以编程方式终止这两个进程(wlescan_dump和process_dump),我该如何以干净的方式完成呢?两个进程的kill-15是否足够?我主要担心的是避免文件损坏,并确保在杀死前完成进程_dump中挂起的文件写入

Kill wlescan_dump和code process_dump关闭所有打开的文件,并在stdin关闭时退出


如果你真的有妄想症,请执行larsks建议的信号处理程序,根据你如何使用打开的文件,你只能自动更新它们:写入outputfile的副本outputfile.temp,然后将outputfile.temp重命名为outputfile。

你应该使用
SIGTERM
信号


您可以在代码中捕获一个
SIGTERM
(信号15),并使用它来确保在退出之前正确关闭所有打开的文件。抱歉,刚才看到larsks的评论解释了完全相同的事情
When killing a process or series of processes, it is common sense to start  
trying with the least dangerous signal, SIGTERM. That way, programs that care
about an orderly shutdown get the chance to follow the procedures that they 
have been designed to execute when getting the SIGTERM signal, such as 
cleaning up and closing open files.