IT门户, 中国互联网人工智能物联网行业资讯平台--公众IT
新闻来源:互联网资料整理       发布时间:2023/4/5 16:44:39       共计:4625 浏览

这个问题需要考虑两个问题,一个是cp进程写文件的时候有没有获取读锁,另一个是读进程是以阻塞方式还是非阻塞方式打开文件。

如果cp进程获取了读锁,而读进程是以非阻塞方式打开文件,那么是不可能读取成功的;

如果读进程以阻塞方式打开文件,那么会一直等待直到cp进程释放读锁,最终会读取成功;

如果cp进程没有获取读锁,读进程以非阻塞方式打开,如果读进程比写进程快,那就会读取失败,如果读进程比写进程慢,那还是有机会读取成功的。

如果读进程以阻塞方式打开文件,只要没遇到文件结束符EOF,那么读进程会边读边等待,直到cp进程完成写入,读进程也就完成读取。

综上所述,如果你的读进程是以阻塞方式读取文件,那么最终是一定会读取成功的,如果是以非阻塞方式读取文件,那么可能会面临读取失败的风险。

你可以做一个简单的实验验证一下,用ctrl-z先将cp写进程放入bash后台暂停,然后看看读进程的反应,然后再将写进程继续运行,再看看读进程反应

个人感觉是可以的,一个文件一边在写,另一个程序在读,完全不影响。最典型的用tail查看日志文件不就是一个程序写一个程序读。

版权说明:
本网站凡注明“公众IT 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
您可以扫描右侧微信二维码联系我们。
网站首页 关于我们 联系我们 合作联系 会员说明 新闻投稿 隐私协议 网站地图