comparison c_kernel/kernel.py @ 4:5c4b5066fab0

Do not try to execute the executable if compilation failed
author Brendan Rius <brendan@omixy.com>
date Fri, 25 Mar 2016 14:25:29 +0000
parents 8ddfdd2a8574
children aa54c85303b6
comparison
equal deleted inserted replaced
3:8ddfdd2a8574 4:5c4b5066fab0
52 source_file.write(code) 52 source_file.write(code)
53 source_file.flush() 53 source_file.flush()
54 with self.new_temp_file(suffix='.out') as binary_file: 54 with self.new_temp_file(suffix='.out') as binary_file:
55 retcode, stdout, stderr = self.compile_with_gcc(source_file.name, binary_file.name) 55 retcode, stdout, stderr = self.compile_with_gcc(source_file.name, binary_file.name)
56 if retcode != 0: 56 if retcode != 0:
57 stderr += "[C kernel] GCC exited with code {}".format(retcode) 57 stderr += "[C kernel] GCC exited with code {}, the executable will not be executed".format(retcode)
58 self.log.error("GCC return code: {}".format(retcode)) 58 self.log.info("GCC return code: {}".format(retcode))
59 self.log.error("GCC stdout: {}".format(stdout)) 59 self.log.info("GCC stdout: {}".format(stdout))
60 self.log.error("GCC stderr: {}".format(stderr)) 60 self.log.info("GCC stderr: {}".format(stderr))
61 61
62 retcode, out, err = CKernel.execute_command([binary_file.name]) 62 if retcode == 0: # If the compilation succeeded
63 if retcode != 0: 63 retcode, out, err = CKernel.execute_command([binary_file.name])
64 stderr += "[C kernel] Executable exited with code {}".format(retcode) 64 if retcode != 0:
65 self.log.error("Executable retcode: {}".format(retcode)) 65 stderr += "[C kernel] Executable exited with code {}".format(retcode)
66 self.log.error("Executable stdout: {}".format(out)) 66 self.log.info("Executable retcode: {}".format(retcode))
67 self.log.error("Executable stderr: {}".format(err)) 67 self.log.info("Executable stdout: {}".format(out))
68 stdout += out 68 self.log.info("Executable stderr: {}".format(err))
69 stderr += err 69 stdout += out
70 stderr += err
71 else:
72 self.log.info('Compilation failed, the program will not be executed')
70 73
71 if not silent: 74 if not silent:
72 stream_content = {'name': 'stderr', 'text': stderr} 75 stream_content = {'name': 'stderr', 'text': stderr}
73 self.send_response(self.iopub_socket, 'stream', stream_content) 76 self.send_response(self.iopub_socket, 'stream', stream_content)
74 stream_content = {'name': 'stdout', 'text': stdout} 77 stream_content = {'name': 'stdout', 'text': stdout}