On Thu, Nov 17, 2016 at 3:00 PM, Corinna Vinschen
<corinna-cygwin@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.