linux – Bash输出流写入文件
发布时间:2020-12-13 23:50:36 所属栏目:Linux 来源:网络整理
导读:所以我在bash上运行这个: # somedevice -getevent 这个命令的作用就是它一直在运行,每当我的设备发送某个数据时,说它检测到温度的变化,它输出这样的东西 /dev/xyz: 123 4567 8910112238 20/dev/xyz: 123 4567 8915712347 19/dev/xyz: 123 4567 8916412345 2
所以我在bash上运行这个:
# somedevice -getevent 这个命令的作用就是它一直在运行,每当我的设备发送某个数据时,说它检测到温度的变化,它输出这样的东西 /dev/xyz: 123 4567 8910112238 20 /dev/xyz: 123 4567 8915712347 19 /dev/xyz: 123 4567 8916412345 22 /dev/xyz: 123 4567 8910312342 25 /dev/xyz: 123 4567 8910112361 18 /dev/xyz: 123 4567 8910112343 20 这只是一直运行,一旦有任何原因它输出一些东西.所以执行无止境. 没有回声是完美的,但是当我尝试使用’>’时运算符这似乎没有写入文件. 所以举个例子 #somedevice -getevent > my_record_file 这不能正常工作,my_record_file只能间隔地写入数据,但是我想立即写入. 有任何想法吗? 解决方法
输出正在缓冲,因为C标准库根据stdout是否是终端设备来更改输出缓冲模式.如果它是终端设备(根据
isatty(3) ),则stdout是行缓冲的:每次写入换行符时都会刷新它.如果它不是终端设备,那么它是完全缓冲的:只有在写入一定数量的数据(通常大约为4 KB到64 KB)时才会刷新它.
因此,当您使用shell的>将命令的输出重定向到文件时重定向操作符,它不再输出到终端并缓冲其输出.程序可以使用 如果您没有这样的选项,可以尝试使用诸如 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |