rocm_smi.py: Fix pipe into head error

When piping rocm_smi into 'head' it failed with "Broken pipe" error. The
error can be safely ignored. head closes the pipe early which causes
calls a SIGPIPE signal to be raised.

https://docs.python.org/3/library/signal.html#note-on-sigpipe

Change-Id: I4a589c6ed9a8c5b50de84b33e28115c6b510045f
Signed-off-by: Galantsev, Dmitrii <dmitrii.galantsev@amd.com>


[ROCm/amdsmi commit: 094c98a74f]
Этот коммит содержится в:
Galantsev, Dmitrii
2023-09-14 11:58:49 -05:00
коммит произвёл Dmitrii Galantsev
родитель cabd0528b9
Коммит 5b362b65ce
+15 -4
Просмотреть файл
@@ -638,10 +638,21 @@ def printLog(device, metricName, value=None, extraSpace=False, useItalics=False)
lock.acquire()
if useItalics:
logstr = italics + logstr + end
if extraSpace:
print('\n' + logstr + '\n', end='', flush=True)
else:
print(logstr + '\n', end='', flush=True)
try:
if extraSpace:
print('\n', end='')
print(logstr + '\n', end='')
sys.stdout.flush()
# when piped into programs like 'head' - print throws an error.
# silently ignore instead
except(BrokenPipeError, IOError):
# https://docs.python.org/3/library/signal.html#note-on-sigpipe
# Python flushes standard streams on exit; redirect remaining output
# to devnull to avoid another BrokenPipeError at shutdown
devnull = os.open(os.devnull, os.O_WRONLY)
os.dup2(devnull, sys.stdout.fileno())
sys.exit(1) # Python exits with error code 1 on EPIPE
lock.release()