Добрый день, уважаемые гуру!
Взываю к вашей помощи, так как ответ сам не могу найти
Имеем :
1. java код (ru.java.process.manager.jar), который умеет запускать через Runtime.getRuntime().exec(); некое *.exe приложение, например
Runtime.getRuntime().exec("c:\\temp\\process_manager.exe");
2. C/C++ код приложения process_manager.exe, который умеет вызывать команды через system (), например
int r_1 = system ("echo 123 > c:\\temp\\123.dat");
int r_2 = system ("c:\\temp\\some_script.cmd");
3. и CMD код some_script.cmd :
echo 456 > c:\\temp\\456.dat
Как работает:
11. Если запустить
process_manager.exe руками в консоли, то создаются и
123.dat и 456.dat
Как не работает:
22. Если запустить
process_manager.exe через
ru.java.process.manager.jar, то создается 123.dat,
НО НЕ СОЗДАЕТСЯ 456.dat
22.1 int r_2 = system ("c:\\temp\\some_script.cmd"); возвращает в этом случае код "1".
Вопрос:
33. Как заставить работать вызов system ("c:\\temp\\some_script.cmd") при спауне процесса process_manager.exe из под java машины ?
Примеры кода :
44. ru.java.process.manager.jar.starter.cmd :
java -jar ru.java.process.manager.jar ru.java.process.manager.MainClass
55. ru.java.process.manager.jar
package ru.java.process.manager;
public class MainClass {
public static void main(String[] args) {
try {
//
Runtime.getRuntime().exec("c:\\temp\\process_manager.exe");
//
} catch (Exception e) {
e.printStackTrace();
}
}
}
66. process_manager.exe
#include <cstdlib>
/**
*
*/
int main(int argc, char **argv) {
//это работает и при запуске process_manager.exe руками из консоли
//и при запуске process_manager.exe через java ru.java.process.manager
int r_1 = system ("echo 123 > c:\\temp\\123.dat");
//а вот это работает при запуске process_manager.exe руками из консоли
//но НЕ работает при запуске process_manager.exe через java ru.java.process.manager
int r_2 = system ("c:\\temp\\some_script.cmd");
}
77. some_script.cmd
echo 456 > c:\\temp\\456.dat
Заранее благодарен!