On Dec 18 19:51, Corinna Vinschen wrote: > On Dec 18 11:40, Warren Young wrote: > > On Dec 18, 2014, at 10:33 AM, Corinna Vinschen <corinna-cyg...@cygwin.com> > > wrote: > > > > > On Dec 18 10:26, Warren Young wrote: > > >> > > >> ...Cygwin doesn’t do something similar? > > > > > > Cygwin isn't a kernel and the process > > > information is kept in shared memory regions held by the parent process > > > and the process itself. This model has limitations you don't have on a > > > real kernel. > > > > I’m aware of that, but can’t the DLL see both the birth and death of > > every Cygwin process? Birth via either DllMain() or execvp(2), and > > death via one of the methods here: > > Aren't we talking about fetching info from non-Cygwin processes?
On re-reading your question, I'm wondering if you don't have a slight misconception. Keep in mind that the (Cygwin) DLL is not a single entity on the system. Every process is running its own copy of the Cygwin DLL. The communication between different Cygwin process requires bookkeeping outside of the DLL. For instance, all Cygwin processes have their own shared memory region constituting something akin to a process table entry of an OS. For security reasons, access to this shared memory is restricted via ACLs, so not every process can open the process info region of every process. Back to the DLL. There's one Cygwin DLL in every Cygwin process' virtual memory. If "the Cygwin DLL" is supposed to keep track of life and death of every Cygwin process, you're in fact asking for *every* Cygwin process keeping track of life and death of *every* other Cygwin process. Again, the Cygwin DLL is no kernel, and it's no process on its own. It's just the core part of each Cygwin process, handling bookkeeping for itself and its child processes, and otherwise trying to communicate with the Cygwin DLLs in other processes in good faith. Does that clarify the situation a bit? Corinna -- Corinna Vinschen Please, send mails regarding Cygwin to Cygwin Maintainer cygwin AT cygwin DOT com Red Hat
pgpx2OytVG7q0.pgp
Description: PGP signature