Уважаемые форумчане! Написал свою программу (С/С++), которая в своих итерационных расчетах использует внешнюю программу ngspice. Так как расчет итерационный, то ngspice вызывается огромное количество раз. При запуске моей проги из консоли — все ОК, т. е. все что мне надо и сколько надо (по времени и количеству вызовов внешней программы).
Так запускаю NGSPICE в C++:
string exec=spice_path+" -b "+tmpspicein+" > "+tmpspiceout; sys_res=system(exec.c_str());
Далее. Для этой моей программки написал GUI на Java, где теперь моя консольная программа вызывается как внешняя:
Так запускаю свою прогу из Java:
proc = Runtime.getRuntime().exec("./SpiceExtr"+" "+Alg);
Проблема заключается в том, что после некоторого количества вызовов программы ngspice моя консольная программы доходит до строчки sys_res=system(exec.c_str()); и дальше просто перестает работать. Процесс (ngspice) есть, но он не считает (типа висит). Если запустить с теми же наптройками мою программу из консоли, то все работает, а если из GUI — то спустя какое-то количество вызовов программы ngspice — подвисает.
Резюме (для обобщения)
1______________2_________________________3
мой GUI → моя консольная программа → ngspice.
2→3 — OK
1→2→3 — не ОК.
Причем, зависание происходит примерно после тысячного запуска программы ngspice.
Может в java какие то ограничения есть для запуска внешних программ? Там, по памяти или что еще? При подвисании система работает нормально, а процесс ngspice потребряет 0% CPU.
Куда копать?