Skip to content

Commit

Permalink
Move autograde_wrapper guts into a main() function
Browse files Browse the repository at this point in the history
This cleans up some warnings
  • Loading branch information
cg2v committed Feb 11, 2016
1 parent d3d6168 commit 6aca17e
Showing 1 changed file with 43 additions and 39 deletions.
82 changes: 43 additions & 39 deletions autodriver/autograde_wrapper.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,46 +20,50 @@ def __call__(self):
while np is None or np != self.waitfor:
(np, self.status)=os.wait()
except OSError:
if pid:
if np:
print("Chld process {} never exited, but no more children left".format(self.waitfor))
self.status=-1

for f in os.listdir("mount"):
src=os.path.join("mount", f)
dst=os.path.join("autolab", f)
shutil.copy(src, dst)
def main():
for f in os.listdir("mount"):
src=os.path.join("mount", f)
dst=os.path.join("autolab", f)
shutil.copy(src, dst)

autolabuser=pwd.getpwnam("autolab")
(r_p, w_p)=os.pipe()
pid=os.fork()
if pid == 0:
os.close(r_p)
os.setgroups([])
os.setgid(autolabuser.pw_gid)
os.setuid(autolabuser.pw_uid)
args=["autodriver"]
args.extend(sys.argv[1:])
args.append("autolab")
if w_p != 1:
os.dup2(w_p, 1)
if w_p != 2:
os.dup2(w_p, 2)
if w_p > 2:
os.close(w_p)
os.execvp(args[0], args)
os.close(w_p)
waiter=WaitLoop(pid)
thr=threading.Thread(target=waiter)
thr.start()
rpf=os.fdopen(r_p)
shutil.copyfileobj(rpf, open("mount/feedback", "w"))
#print("Copied output")
rpf.close()
thr.join()
# if core, exit -1, else pass through code.
if os.WIFSIGNALED(waiter.status):
status=-1
else:
status=os.WEXITSTATUS(waiter.status)
#print("Status is {}".format(status))
sys.exit(status)
autolabuser=pwd.getpwnam("autolab")
(r_p, w_p)=os.pipe()
pid=os.fork()
if pid == 0:
os.close(r_p)
os.setgroups([])
os.setgid(autolabuser.pw_gid)
os.setuid(autolabuser.pw_uid)
args=["autodriver"]
args.extend(sys.argv[1:])
args.append("autolab")
if w_p != 1:
os.dup2(w_p, 1)
if w_p != 2:
os.dup2(w_p, 2)
if w_p > 2:
os.close(w_p)
os.execvp(args[0], args)
os.close(w_p)
waiter=WaitLoop(pid)
thr=threading.Thread(target=waiter)
thr.start()
rpf=os.fdopen(r_p)
shutil.copyfileobj(rpf, open("mount/feedback", "w"))
#print("Copied output")
rpf.close()
thr.join()
# if core, exit -1, else pass through code.
if os.WIFSIGNALED(waiter.status):
status=-1
else:
status=os.WEXITSTATUS(waiter.status)
#print("Status is {}".format(status))
sys.exit(status)

if __name__ == '__main__':
main()

0 comments on commit 6aca17e

Please sign in to comment.