相关疑难解决方法(0)

异常进程终止时的资源清理

我的问题是,当一个进程异常终止时(通过信号,它可能是SIGKILL,所以我们不能拦截它),是否有任何保证的顺序或原子性,其资源被释放?特别是,我对文件锁和共享内存感兴趣.

例如:

1)如果过程是坚持2个文件锁和异常终止,是它在所有可能的另一个进程试图锁定看到一个文件被锁定相同的文件和另一个被解锁?或者从其他进程的角度来看,释放文件锁原子的过程是什么?

如果它不是原子的,那么是否存在至少一个预定义的顺序,其中文件锁将被终止进程释放(例如,它们最初被锁定的顺序相反)?

2)我想使用文件锁来确保正确的共享内存初始化 - 映射到共享内存的进程将保持共享锁,并且想要映射到同一共享内存段的新进程将尝试测试该锁以查看是否需要执行初始化(如果需要,我可以在以后提供更多详细信息).

但是同样的问题出现在这里:如果一个持有文件锁并且也映射到共享内存段的进程异常终止,那么在共享内存自动取消映射后,另一个进程是否仍然可以看到文件锁被锁定?或者是从其他进程的角度取消映射共享内存段并解锁文件原子?

c unix multithreading ipc shared-memory

7
推荐指数
1
解决办法
567
查看次数

标签 统计

c ×1

ipc ×1

multithreading ×1

shared-memory ×1

unix ×1