Мутный вопрос про java и c++
От: nikinikiniki  
Дата: 31.03.18 12:17
Оценка:
Добрый день, уважаемые гуру!

Взываю к вашей помощи, так как ответ сам не могу найти

Имеем :
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



Заранее благодарен!
java c++ system console
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.