Linux下多个进程可以同时打开同一个文件吗?文件描述符与打开文件的关系?
一:结论
1.两个进程中分别产生生成两个独立的fd
2.两个进程可以任意对文件进行读写操作,操作系统并不保证写的原子性
3.进程可以通过系统调用对文件加锁,从而实现对文件内容的保护
4.任何一个进程删除该文件时,另外一个进程不会立即出现读写失败
5.两个进程可以分别读取文件的不同部分而不会相互影响
6.一个进程对文件长度和内容的修改另外一个进程可以立即感知
二:文件描述符与打开文件的关系?
内核中,对应于每个进程都有一个文件描述符表,表示这个进程打开的所有文件。文件描述表中每一项都是一个指针,指向一个用 于描述打开的文件的数据块———file对象,file对象中描述了文件的打开模式,读写位置等重要信息,当进程打开一个文件时,内核就会创建一个新的file对象。需要注意的是,file对象不是专属于某个进程的,不同进程的文件描述符表中的指针可以指向相同的file对象,从而共享这个打开的文件。file对象有引用计数,记录了引用这个对象的文件描述符个数,只有当引用计数为0时,内核才销毁file对象,因此某个进程关闭文件,不影响与之共享同一个file对象的进程。
文章参考:https://blog.csdn.net/weibo1230123/article/details/83045458
Linux下多个进程可以同时打开同一个文件吗?文件描述符与打开文件的关系?相关推荐
- linux下两个进程可以同时打开同一个文件吗?返回的文件描述符一样吗?
Linux下两个进程可以同时打开同一个文件吗?返回的文件描述符一样吗? 一:结论 1.两个进程中分别产生生成两个独立的fd 2.两个进程可以任意对文件进行读写操作,操作系统并不保证写的原子性 3.进程 ...
- linux查看进程grep工作组,Linux下查看一个进程打开了哪...-linux 如何找到进程的工作目录...-使用 grep 恢复误删的文本文件_169IT.COM...
Linux下查看一个进程打开了哪些文件的命令示例,供大家学习参考. 查看进程14755(httpd)打开了哪些文件: 代码如下: localhost:~# lsof -p 14755 COMMAND ...
- Linux下查看某个进程打开的文件数-losf工具常用参数介绍
Linux下查看某个进程打开的文件数-losf工具常用参数介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在linux操作系统中,一切皆文件.通过文件不仅仅可以访问常规数据,还 ...
- Linux下ps查找进程用kill终止命令
Linux下ps查找进程用kill终止命令<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:offic ...
- linux查看某进程的连接,linux下查看指定进程的所有连接信息(转)
定位某个进程的网络故障时经常需要用到的一个功能就是查找所有连接的信息.通常查找某个端口的连接信息使用 ss 或者 netstat 可以轻松拿到,如果是主动与别的机器建立的连接信息则可以通过 lsof ...
- linux下杀死全部进程,linux下批量杀死进程
ps aux|grep python|grep -v grep|cut -c 9-15|xargs kill -15 管道符"|"用来隔开两个命令,管道符左边命令的输出会作为管道符 ...
- linux下的僵尸进程处理SIGCHLD信号
什么是僵尸进程? 首先内核会释放终止进程(调用了exit系统调用)所使用的所有存储区,关闭所有打开的文件等,但内核为每一个终止子进程保存了一定量的信息.这些信息至少包括进程ID,进程的终止状态,以及该 ...
- 在linux下python爬虫进程发生异常时自动重启直至正常结束的方法
在linux下python爬虫进程发生异常时自动重启直至正常结束的方法 参考文章: (1)在linux下python爬虫进程发生异常时自动重启直至正常结束的方法 (2)https://www.cnbl ...
- kill掉多个进程linux中的sudo,linux下批量kill进程的方法
--kill某个用户下的所有进程(用户为test) --pkill # pkill -u test --killall # killall -u test --ps # ps -ef | grep t ...
最新文章
- redis mysql排行榜实现_redis实现排行榜
- c语言程序设计 中南大学,中南大学-C语言程序设计试卷.docx
- 【Elastic Stack学习】ELK日志分析平台(一)ELK简介、ElasticSearch集群
- 033_NavMenu导航菜单
- 详解深度学习中的Normalization,不只是BN(2)
- 关于时钟、中断的理解
- OSPF的虚链路配置
- beeline安装_hive使用beeline配置远程连接
- Spring IOC基础使用
- Hadoop快速入门——第一章、认识Hadoop与创建伪分布式模式
- Java 工程师修炼之道
- python用openpyxl模块操作Excel学习笔记
- mq选型:rocketMq和kafka对比
- appcan ajax mysql_AppCan之登录功能001
- unbuntu下pytorch安装
- 12.2总结(纵使结局不如意,放弃实属下下签。)
- myeclipes10.7+maven+myBatis+spring+springMvc
- vmware部署优麒麟系统
- Python实现分布式服务器部署维护
- 计算机进位制及其规则,进位计数制及其转换方法过程详解
热门文章
- 字节与字符,字节流与字符流
- JN516x串口测试
- 超像素分割(Superpixel Segmentation)发展
- 如何在pycharm中安装PIL模块
- 基于python的Poisson-Gumbel 泊松耿贝尔复合极值分布实现
- 常用的数学符号sup(上确界) 和 inf(下确界)以及少量数学公式的markdown模式下latex 格式 编写
- UVA10635--Prince and Princess
- 现任明教教主CCNP Security SecureV1.0 第一天.3
- Python爬虫(2)创建项目
- Java 基础 | Java 中引用与指针的关系