> > *Any* time that you write to an executing executable, all bets are off.
> > The most likely outcome is a big 'ol crash & burn. With a local FS, Unix
> > prevents you from shooting yourself in the foot, but with NFS, fire
> > away.. I've done it. It *does* let you, but...
> > Solution: Don't do that. Shut them all down, on all clients, upgrade
> > the binaries, then restart the processes on the clients.
> > As far as the scenerio that you've described, I *think* that it would
> > actually work. When the new process is fork()ed, it gets a copy of the
> > file descriptors from it's parent, so the file is still open to it. If
> > it the exec()s, the new image no longer has any real ties to it's parent
> > (at least, not that are relevant to this).
> What about processes with shared memory such as samba 2.0?
fork()ed processes are *identical* to their parents execept for the return
value from fork(). They have the same shared memory handles, file
descriptors, etc. The kernel "knows" that there's an extra copy of each, and
updates it's link counts, etc.
Actually, the real point is that it'll still be the old executable running
with the old libraries, until you shut down the whole group. Each of the
processes are "linked" to the original file, so the new version will never
run 'til the whole group is restarted.
It should just work. I can't think of any reason why it shouldn't.
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to email@example.com
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/