On 2012-08-02, Laszlo Nagy <gand...@shopzeus.com> wrote: > >> I still don't get it. shm_unlink() works the same way unlink() does. >> The resource itself doesn't cease to exist until all open file >> handles are closed. From the shm_unlink() man page on Linux: >> >> The operation of shm_unlink() is analogous to unlink(2): it >> removes a shared memory object name, and, once all processes >> have unmapped the object, de-allocates and destroys the >> contents of the associated memory region. After a successful >> shm_unlink(), attempts to shm_open() an object with the same >> name will fail (unless O_CREAT was specified, in which case a >> new, distinct object is created). >> >> Even if the parent calls shm_unlink(), the shared-memory resource >> will continue to exist (and be usable) until all processes that are >> holding open file handles unmap/close them. So not only will >> detached children not crash, they'll still be able to use the shared >> memory objects to talk to each other.
Note that when I say the detached children will still be able to talk to each other using shared memory after the parent calls shm_unlink() and exit(), I'm talking about the general case -- not specifically about the multiprocessing module. There may be something else going on with the multiprocessing module. > I stand corrected. It should still be examined, what kind shared > memory is used under non-linux systems. System V on AIX? And what > about Windows? So maybe the general answer is still no. But I guess > that the OP wanted this to work on a specific system. > > Dear Andrea Crotti! Please try to detach two child processes, exit > from the main process, and communicate over a multiprocessing queue. > It will possibly work. Sorry for my bad advice. I'm not claiming it will work, since I don't know how the IPC in the multiprocessing module works. It may indeed break when a child process is detatched (which I'm assuming means being removed from the process group and/or detached from the controlling tty). But, I'm not aware of any underlying Unix IPC mechanism that breaks when a child is detached, so I was curious about what would cause multiprocessing's IPC to break. -- Grant Edwards grant.b.edwards Yow! I didn't order any at WOO-WOO ... Maybe a YUBBA gmail.com ... But no WOO-WOO! -- http://mail.python.org/mailman/listinfo/python-list