android - 一个进程试图 chmod 一个文件,而另一个进程已经写入该文件?

标签 android c filesystems

假设,

在时间A,第一个进程(P1)创建一个文件并开始写入它,一段时间后,

在时间 B,第二个进程尝试更改文件权限。并且,一段时间后,

在时间C,P1完成写入并关闭文件。

问题是:其他进程(比如P3)在什么时间点可以观察到文件权限已被更改?

文件系统在Android内部,应该是Linux文件系统。

我没有找到解决此并发问题的任何文档或规范。

最佳答案

在 Linux 试图遵循的 POSIX 语义中,file access permissions仅在打开文件时检查。在进程打开文件描述符后,进程可以继续使用文件描述符被授予的那些权限,直到进程关闭文件描述符。

一个进程也有可能拥有一个打开的文件描述符到一个它没有打开的文件,或者从来没有权限打开 - 文件描述符可以通过 fork 和 exec 继承,它们也可以被发送通过 Unix 域套接字。

并发方面只有一件事:open 发生在 chmod 生效之前或之后。如果在之前,那么写入文件的过程可以完全忘记 open 的发生。

关于android - 一个进程试图 chmod 一个文件,而另一个进程已经写入该文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50544068/

相关文章:

c++ - scanf(%s) EOF 问题

android - 如何在 Android 中打开 csv 文件

android - PagerSlidingTabStrip:如何在运行时刷新当前选项卡中的内部 fragment Listview 并停止为下一个选项卡加载数据

android - 这个用户如何实现 OnFragmentInteractionListener

java - Android 颜色在我的物理设备上不起作用

java - android中的三角形opengl

c - 使用 union/结构在纯 C 中创建广义列表对象

c - 如何在不释放它指向的数据指针的情况下释放 skb 缓冲区?

delphi - 正在从 C :/ProgramData in Windows 7 does not really delete the file? 删除文件

java - 在 Java 中确定文件创建日期