in Java:
Runtime.getRuntime().exec( command, null, workingDir)
运行我的C 程序,但该程序随机获得大约10%的时间。
如果我使用以下代码,一切都可以完美地工作:
Runtime.getRuntime().exec( command, new String[]{"PATH=/tmp"}, workingDir);
奇怪但真实。
看起来好像问题在于OpenMP。有争议的C 代码使用OpenMP,当它在不需要多个处理器的模式中使用时,您必须通过:
来调用它。runtime.getRuntime((。exec(cmd,new String [] {},workingDir(;
如果您致电:
runtime.getRuntime((。exec(cmd,new String [] {" gomp_cpu_affinity = 0-7"},workingDir(
然后您会得到虚假/随机sigsegv错误。
我要声称这与OpenMP有关,而不是与Java的Runtime.exec((。
如果我使用以下代码,一切都可以完美地工作:
Runtime.getRuntime().exec( command, new String[]{"PATH=/tmp"}, workingDir);
听起来可能很奇怪,但有效!