代码之家  ›  专栏  ›  技术社区  ›  tsp

检查共享内存是否已连接

  •  0
  • tsp  · 技术社区  · 2 年前

    我用共享内存实现。
    为了访问相同的共享内存 shared memory address assigned pid 现在呢 pid 如果不同,则通过系统V重新分配地址 shmat .
    child process 终止或终止 parent process 删除共享内存,它 shmdt 最后 连接共享内存 地址和 shmctl 这个 shared memory id .

    我认为这是正确的行为 spawn ,但这也是正确的行为吗 fork ?
    如果我使用 ,我希望在没有 连接共享内存 即使 pid 这是不同的。

    如果这是一个用 ,当它有共享内存的id和地址时,我认为 子进程 要么逃跑 shmdt 在现有地址或更新 pid .

    1. 有没有办法检查进程拥有的共享内存的id和地址是否有效?
    2. shmdt 在分叉子进程中不影响父进程?(父进程仍然可以访问共享内存吗?)
    3. 有必要吗 shmdt 所有共享内存都归 父进程 子进程 创建人 为了正常 shmctl 要继续吗?
    0 回复  |  直到 2 年前