Devuelve el valor de la llamada a la función system () en C ++, que se utiliza para ejecutar un progtwig Python

Estoy trabajando en Linux con código que hace que un system() llame para ejecutar un progtwig python. Estoy interesado en el valor devuelto por esta llamada a la función para comprender cómo fue la ejecución del progtwig python.

Hasta ahora, he encontrado 3 resultados:

  • Cuando el proceso de python se completa con éxito, el valor devuelto por el sistema () es 0

  • Cuando el proceso de Python finaliza durante la ejecución (usando kill -9 pid ), el valor devuelto por el sistema () es 9

  • Cuando el proceso de Python falla solo debido a parámetros incorrectos, el valor devuelto por el sistema () es 512

Esto no encaja con lo que he leído sobre la función system () .

Además, el código para el progtwig python que se está invocando muestra que sale con sys.exit(2) cuando se encuentra cualquier error, y sys.exit(0) cuando la ejecución se completa con éxito.

¿Alguien podría relacionar estos dos? ¿Estoy interpretando el valor de retorno de una manera incorrecta? ¿Hay algún procesamiento de Linux involucrado que tome el argumento de la función sys.exit() del progtwig python y devuelva el valor del system() basado en él?

El código de salida del progtwig al que llama se puede buscar con WEXITSTATUS(status) según la página del manual . También vea la página del manual para wait .

 int status = system("/path/to/my/program"); if (status < 0) std::cout << "Error: " << strerror(errno) << '\n'; else { if (WIFEXITED(status)) std::cout << "Program returned normally, exit code " << WEXITSTATUS(status) << '\n'; else std::cout << "Program exited abnormaly\n"; }