我想用运行时的exec()方法在Java中运行一个C程序。Java代码如下:Process process = runtime.exec(command);在这种情况下,我如何定义编译后的C程序的运行时间?我的意思是,如果我可以设置一个时间间隔,如果代码没有在这个时间间隔内完成运行,是否会返回超过时间限制的错误?
关于Linux上进程的堆栈大小,我有一个问题。此堆栈大小是否在链接时确定并在ELF文件中编码?我写了一个程序来打印它的堆栈大小如果我直接从shell运行这个程序,它的值大约是10 of。但是,当我从属于多线程程序的线程中exec它时,它的值大约为2MB。
因此,我想知道哪些因素影响来自某些父进程的fork and exec-ed进程的堆栈大小。
我痛苦地发现,在多线程程序中,在一个线程中打开文件和设置“close on exec”位和在另一个线程中调用subprocess.Popen之间存在竞争风险-这可能会导致意外的句柄被传递给第二个孩子,在我看来子进程将立即执行一个shell,但我不确定python线程锁在这种情况下的行为。PS我知道linux有一个'close on exec‘位来表示打开,但我没有在linux上运行,而且无论如何,python临时文件(或者至少是2.6版本)不使用这个工具。