У меня есть следующий код C ++
...
int res = system("python myscript.py");
if(res != 0){
cerr << "Exit code was:" << res << endl;
}
Файл скрипта Python заканчивается
print "This will exit with code 0"sys.exit(0)
Если я запускаю скрипт python напрямую, я получаю правильный код выхода (0). Однако, если я запускаю его через приложение c ++, res равно -1, даже если строка «Это завершится с кодом 0» будет напечатана правильно.
Как ни странно, если я переместу вызовы в начало выполнения приложения C ++, код завершения, возвращаемый системным вызовом python, будет правильным.
Что может привести к тому, что оно станет «неправильным» по пути?
РЕДАКТИРОВАТЬ:
После добавления некоторой отладочной информации «cout» вокруг проблемы … она исчезла. Похоже, у меня есть Heisenbug.
Вы уверены, что скрипт запущен?
Пытаться
...
int res = system("/usr/bin/python /path/to/myscript.py");
if(res != 0){
cerr << "Exit code was:" << res << endl;
}
Других решений пока нет …