[英]Can a shared interrupt line in Linux have different interrupt handlers?
[英]interrupt linux command redirection can loss data?
如果我运行这样的bash脚本,并且在该脚本中,它将调用一些可执行命令,如下所示
myexec args1 arg2 > out.txt
myexec将通过c API printf打印一些日志信息。 如果我中断脚本,因为myexec由于某些未知原因而卡住,是否会丢失某些日志信息,而不将其保存到out.txt文件中? 在我的实验中,我发现是的,但是有什么方法可以解决这个问题? 而且我不知道为什么日志信息没有刷新到out.txt文件
========
我使用stdbuf解决了我的问题,相关的问题是: 管道到tee时强制对stdout进行行缓冲
当您中断脚本时,很有可能不会刷新stdout
缓冲区。 在您的程序中,在每个printf
之后立即添加fflush(stdout)
以刷新缓冲区。 或者,在printf
的末尾添加换行符( \\n
)-也会刷新缓冲区(但会在日志输出中添加换行符)。
您可以指定可以正确完成程序的信号( SIGUSR1, SIGUSR2
等,尽管不能覆盖SIGKILL
)。 在信号处理程序中,刷新输出流( fflush(stdout)
或替代项)并关闭应用程序。 要停止您的程序,请输入如下
杀死
pidof myapp
-SIGUSR1 pid
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.