1

有没有办法在 Android NDK 上跨进程锁定,例如使用互斥锁或文件锁?

我想锁定一个套接字,这样只有一个进程可以一次发送给它。这些进程不是分叉的,它们是独立的调用。

当我正在编写一个共享库时,我不能依赖任何需要写入权限的共享位置,也不能使用任何进程本地存储,因为根据定义,这将无法与其他进程共享。这也适用于应用程序名称。我本质上是在寻找带有 AF_UNIX 套接字的抽象名称空间之类的东西,但是对于互斥体/信号量。

4

1 回答 1

2

假设进程具有相同的用户 ID,您可以使用flock(2)锁定文件(可以是两个进程都可以访问的任何内容),或者使用 POSIX 信号量操作 ( sem_open(3)) 来使用信号量。

如果用户 ID 不同,这些机制仍然可以工作,但您必须将文件权限设置为更加“开放”——这引入了一些恶意应用程序通过抓取锁执行拒绝服务攻击的风险。

于 2013-09-04T06:06:02.383 回答