当前位置: 技术问答>linux和unix
文件读写控制
来源: 互联网 发布时间:2016-02-19
本文导语: 这个问题是关于linux下文件并行操作的 现在有个进程或者线程正在把采集到的数据写到某个文件, 同时及时把数据发送到远端的 另一个pc上, 由于采集数据速度为(1M/s), 为了保证数据的不丢失, 如果网络直接发送内存...
这个问题是关于linux下文件并行操作的
现在有个进程或者线程正在把采集到的数据写到某个文件, 同时及时把数据发送到远端的
另一个pc上, 由于采集数据速度为(1M/s), 为了保证数据的不丢失, 如果网络直接发送内存中的
数据, 由于数据总量较大(>2G), 内存缓冲只有2M的FIFO, 直接网络发送, 可能由于网络太慢, 导致
数据丢失.
所以在本地文件缓冲数据, 故只写文件进程或者线程, 一直在工作, 直到采集需要的数据长度(已设定好)为止
另一个进程要同时打开这个文件, 并读取数据, 因此该文件是个FIFO,
我不清楚该怎样标记读,写的位置, 读的时候, 怎样看到写文件进程更新的内容 ?
另一问题, 怎样把已读的数据删除, 以节省CF卡空间?
现在有个进程或者线程正在把采集到的数据写到某个文件, 同时及时把数据发送到远端的
另一个pc上, 由于采集数据速度为(1M/s), 为了保证数据的不丢失, 如果网络直接发送内存中的
数据, 由于数据总量较大(>2G), 内存缓冲只有2M的FIFO, 直接网络发送, 可能由于网络太慢, 导致
数据丢失.
所以在本地文件缓冲数据, 故只写文件进程或者线程, 一直在工作, 直到采集需要的数据长度(已设定好)为止
另一个进程要同时打开这个文件, 并读取数据, 因此该文件是个FIFO,
我不清楚该怎样标记读,写的位置, 读的时候, 怎样看到写文件进程更新的内容 ?
另一问题, 怎样把已读的数据删除, 以节省CF卡空间?
|
你为什么非要用fifo呀,你不是要保存成文件吗?你从文件中读数不可以吗?能及时发送出去就发送,不能的话就从文件中读.
|
写进程写完一个文件后发个信号量给读进程,读进程读取数据并发送出去,发送完就删掉文件