假设,
在时间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/