[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [rhel5-branch] Make execWithRedirect() append to the files. (#702024)



On Mon, Aug 29, 2011 at 05:17:23PM +0200, Ales Kozumplik wrote:
> Otherwise stdout output is lost if we pass the same filename for stdout
> and stderr.
> ---
>  iutil.py |   13 +++++++++++--
>  1 files changed, 11 insertions(+), 2 deletions(-)
> 
> diff --git a/iutil.py b/iutil.py
> index c482b18..9a53b16 100644
> --- a/iutil.py
> +++ b/iutil.py
> @@ -36,15 +36,24 @@ def execWithRedirect(command, argv, stdin = 0, stdout = 1, stderr = 2,
>          if not searchPath and not os.access (command, os.X_OK):
>              raise RuntimeError, command + " can not be run"
>  
> +    def try_truncate(f):
> +        try:
> +            f.truncate(0)
> +        except IOError, e:
> +            # will fail for e.g. for /dev/tty5
> +            pass
> +
>      if type(stdin) == type("string"):
>          if os.access(stdin, os.R_OK):
>              stdin = open(stdin)
>          else:
>              stdin = 0
>      if type(stdout) == type("string"):
> -        stdout = open(stdout, "w")
> +        stdout = open(stdout, "a")
> +        try_truncate(stdout)
>      if type(stderr) == type("string"):
> -        stderr = open(stderr, "w")
> +        stderr = open(stderr, "a")
> +        try_truncate(stderr)
>  
>      try:
>          proc = subprocess.Popen([command] + argv, stdin=stdin, stdout=stdout,
> -- 
> 1.7.6

Is this any safer? Seems like Popen is still going to have the same file
open twice. In RHEL6 we seem to be using pipes and tee to manage the
output streams from the process.

-- 
Brian C. Lane | Anaconda Team | IRC: bcl #anaconda | Port Orchard, WA (PST8PDT)

Attachment: pgpbtJJls1Ctm.pgp
Description: PGP signature


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]