On 11/29/2016 8:26 AM, Erik Bray wrote: > On Thu, Nov 17, 2016 at 3:00 PM, Corinna Vinschen > <corinna-cyg...@cygwin.com> wrote: >> On Nov 17 14:30, Erik Bray wrote: >>> Hi all, >>> >>> For a quick bit of background, I'm working on porting the highly >>> useful psutil [1] Python library to Cygwin. This has proved an >>> interesting exercise, as much of the functionality of psutil works on >>> Cygwin through existing POSIX interfaces, and a handful of >>> Linux-specific interfaces as well. But there are some bits that >>> simply don't map at all. >>> >>> The one I'm struggling with right now is retrieving Cygwin environment >>> variables for a process (under inspection--i.e. not listing a >>> process's environment from within that process which is obviously >>> trivial). >>> >>> I've looked at every route I could conceive of but as far as I can >>> tell this is currently impossible. That's fine for now--I simply >>> disable that functionality in psutil. But it is unfortunate, though, >>> since the information is there. >>> >>> There are a couple avenues I could see to this. The most "obvious" >>> (to me) being to implement /proc/<pid>/environ. >>> >>> I would be willing to provide a patch for this if it would be >>> accepted. Is there some particular non-obvious hurdle to this that it >>> hasn't been implemented? Obviously there are security >>> implications--the /proc/<pid>/environ should only be readable to the >>> process's owner, but that is already within Cygwin's capabilities, and >>> works for other /proc files. >> >> Patch welcome. Implementing this should be fairly straightforward. >> The only hurdle is winsup/CONTRIBUTORS ;) > > Thanks--I went to go work on this finally but it turns out not to be > straightforward after all, as the process's environment is not shared > in any way between processes. > > I could do this, if each process kept a copy of its environment block > in shared memory, which would in turn have to be updated every time > the process's environment is updated. But I don't know what the > impact of that would be performance-wise. > > Any advice? >
Sounds like a job for a thread that wakes every X time units to check the contents of the environment. Or is there a notification API that could be used to wake the thread? I know there is a disk change notification API for this; maybe one for environment changes as well. -- cyg Simple -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple