我的问题是,当一个进程异常终止时(通过信号,它可能是SIGKILL,所以我们不能拦截它),是否有任何保证的顺序或原子性,其资源被释放?特别是,我对文件锁和共享内存感兴趣.
例如:
1)如果进程持有2个文件的锁并且异常终止,那么试图锁定相同文件的另一个进程是否可能看到一个文件被锁定而另一个文件被解锁?或者从其他进程的角度来看,释放文件锁原子的过程是什么?
如果它不是原子的,那么是否存在至少一个预定义的顺序,其中文件锁将被终止进程释放(例如,它们最初被锁定的顺序相反)?
2)我想使用文件锁来确保正确的共享内存初始化 – 映射到共享内存的进程将保持共享锁,并且想要映射到同一共享内存段的新进程将尝试测试该锁以查看是否需要执行初始化(如果需要,我可以在以后提供更多详细信息).
但是同样的问题出现在这里:如果一个持有文件锁并且也映射到共享内存段的进程异常终止,那么在共享内存自动取消映射后,另一个进程是否仍然可以看到文件锁被锁定?或者是从其他进程的角度取消映射共享内存段并解锁文件原子?