diff options
author | Steve Reinhardt <stever@gmail.com> | 2008-08-04 00:40:31 -0400 |
---|---|---|
committer | Steve Reinhardt <stever@gmail.com> | 2008-08-04 00:40:31 -0400 |
commit | fe8aeff362844838c60ff31e444573fb7e9a7793 (patch) | |
tree | 8796c12b47ecc9609de9215a92d1bce306a6cf0d /src/python/m5 | |
parent | 50ef39af82413ef463609f24173b22af13fad268 (diff) | |
download | gem5-fe8aeff362844838c60ff31e444573fb7e9a7793.tar.xz |
Add -r/-e options to redirect stdout/stderr.
Better than using shell since it automatically uses -d directory
for output files (creating it as needed).
Diffstat (limited to 'src/python/m5')
-rw-r--r-- | src/python/m5/main.py | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/src/python/m5/main.py b/src/python/m5/main.py index 2bbd72152..c9b1940dc 100644 --- a/src/python/m5/main.py +++ b/src/python/m5/main.py @@ -82,6 +82,14 @@ add_option('-N', "--release-notes", action="store_true", default=False, # Options for configuring the base simulator add_option('-d', "--outdir", metavar="DIR", default=".", help="Set the output directory to DIR [Default: %default]") +add_option('-r', "--redirect-stdout", action="store_true", default=False, + help="Redirect stdout (& stderr, without -e) to file") +add_option('-e', "--redirect-stderr", action="store_true", default=False, + help="Redirect stderr to file") +add_option("--stdout-file", metavar="FILE", default="simout", + help="Filename for -r redirection [Default: %default]") +add_option("--stderr-file", metavar="FILE", default="simerr", + help="Filename for -e redirection [Default: %default]") add_option('-i', "--interactive", action="store_true", default=False, help="Invoke the interactive interpreter after running the script") add_option("--pdb", action="store_true", default=False, @@ -138,6 +146,33 @@ def main(): arguments = options.parse_args() + if not os.path.isdir(options.outdir): + os.makedirs(options.outdir) + + # These filenames are used only if the redirect_std* options are set + stdout_file = os.path.join(options.outdir, options.stdout_file) + stderr_file = os.path.join(options.outdir, options.stderr_file) + + # Print redirection notices here before doing any redirection + if options.redirect_stdout and not options.redirect_stderr: + print "Redirecting stdout and stderr to", stdout_file + else: + if options.redirect_stdout: + print "Redirecting stdout to", stdout_file + if options.redirect_stderr: + print "Redirecting stderr to", stderr_file + + # Now redirect stdout/stderr as desired + if options.redirect_stdout: + redir_fd = os.open(stdout_file, os. O_WRONLY | os.O_CREAT | os.O_TRUNC) + os.dup2(redir_fd, sys.stdout.fileno()) + if not options.redirect_stderr: + os.dup2(redir_fd, sys.stderr.fileno()) + + if options.redirect_stderr: + redir_fd = os.open(stderr_file, os. O_WRONLY | os.O_CREAT | os.O_TRUNC) + os.dup2(redir_fd, sys.stderr.fileno()) + done = False if options.build_info: |