Compare commits
No commits in common. "cd6197caa33e9356e97518eaf54a5cfa592670da" and "415757535e28fe31e0b5687b8ee1ee9a491b1393" have entirely different histories.
cd6197caa3
...
415757535e
41
runall.py
41
runall.py
|
@ -1,31 +1,26 @@
|
|||
from itertools import product
|
||||
import signal
|
||||
from subprocess import DEVNULL, PIPE, Popen, TimeoutExpired
|
||||
import subprocess
|
||||
|
||||
chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ '
|
||||
|
||||
# Prevent zombie processes
|
||||
signal.signal(signal.SIGCHLD, signal.SIG_IGN)
|
||||
|
||||
|
||||
def check_pair(script, instr, outstr):
|
||||
process = Popen(
|
||||
["/usr/bin/env", "bash", "-c", "--", script],
|
||||
stdin=PIPE,
|
||||
stdout=PIPE,
|
||||
stderr=DEVNULL,
|
||||
try:
|
||||
result = subprocess.run(
|
||||
[
|
||||
"/usr/bin/env", "bash", "-c",
|
||||
";\n".join((
|
||||
# Cleanup child processes on exit
|
||||
"trap 'kill -9 $(jobs -p)' SIGINT SIGTERM EXIT",
|
||||
script,
|
||||
))
|
||||
],
|
||||
timeout=5,
|
||||
input=instr.encode(),
|
||||
capture_output=True,
|
||||
)
|
||||
|
||||
try:
|
||||
stdout, stderr = process.communicate(instr.encode(), timeout=5)
|
||||
return process.returncode == 0 and stdout == outstr.encode()
|
||||
except TimeoutExpired:
|
||||
try:
|
||||
process.kill()
|
||||
stdout, stderr = process.communicate()
|
||||
except ProcessLookupError:
|
||||
pass
|
||||
|
||||
return result.returncode == 0 and result.stdout == outstr.encode()
|
||||
except subprocess.TimeoutExpired:
|
||||
return False
|
||||
|
||||
|
||||
|
@ -63,8 +58,8 @@ if __name__ == '__main__':
|
|||
print("\nSearching for identity")
|
||||
find_script((
|
||||
("1", "1"),
|
||||
("42", "42"),
|
||||
("1984", "1984"),
|
||||
("2", "2"),
|
||||
("3", "3"),
|
||||
), max_length=3)
|
||||
|
||||
# Successor
|
||||
|
|
Loading…
Reference in New Issue