modifying os.environ
Quinn Dunkan
quinn at euro.ugcs.caltech.edu
Wed Apr 19 13:56:03 EDT 2000
More information about the Python-list mailing list
Wed Apr 19 13:56:03 EDT 2000
- Previous message (by thread): modifying os.environ
- Next message (by thread): modifying os.environ
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On 18 Apr 2000 16:30:13 GMT, Donn Cave <donn at u.washington.edu> wrote: >Quoth Martin von Loewis <loewis at informatik.hu-berlin.de>: >| quinn at zloty.ugcs.caltech.edu (Quinn Dunkan) writes: >... >| > Or perhaps there's a better way to do the (common) thing I'm trying >| > to do: clean the environment to insure some minimum sane values. I >| > can't make a copy of the environ and then pass to execve() since >| > that doesn't help much for popen and system. >| >| You could implement popen and system yourself, starting from popen2 >| (for example). > >That may sound like the re-invention of the wheel, but there are >other improvements that can be made at the same time: > > - eliminate system()'s sh -c 'shell command', which can be a > security liability in some situations. The shell can do > some really useful things, but if you don't need those things > you should be able to pass in an argv sequence and skip sh. I do need the shell's useful things, and the system() commands are constants, so things should be pretty bulletproof as long as the environment is also constant, right? But it *would* be useful to have a spawn() or run() or something builtin which does a proper vfork/exec with no subshell involved. I often find myself writing one of those. > - Raise exception on exit status, complete with error output as > exception value. A bit of a pain to implement, and again not > not always the right thing to do, but usually it is the right > thing. I don't understand... are you saying the close() method should throw the exception? What's wrong with just checking it's return value normally? How is a child you started exiting exceptional? And if the child has been started asynchronously, do you mean throw an exception from the SIGCHLD handler, or waitpid()? I wound up just writing unsetenv(), and then setenviron() which sets the environ to a given dict.
- Previous message (by thread): modifying os.environ
- Next message (by thread): modifying os.environ
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list