У меня есть скрипт, который я вызываю из программы на Си. Я делаю это перед тем, как запускать потоки, так как мне нужна ссылка ppp, прежде чем эти потоки начнутся. Я делаю следующее:
int main(){
int ret = 0;
ret = WEXITSTATUS(system("./nbiot_telit_ppp_installer.sh"));
printf("ret = %d\r\n", ret);
// Never gets here after ppp is up
/* Start the threads */
==> starts thread-1
==> starts thread-2
}
Я пытался вызвать скрипт в потоке-1, как показано ниже:
void *thread1(void *thPtr)
{
int ret = 0;
ret = WEXITSTATUS(system("./nbiot_telit_ppp_installer.sh"));
printf("ret = %d\r\n", ret);
// Never gets here after ppp is up
/* Some aws init code */
while(1){
}
}
В случае успеха скрипта я получаю ниже:
Script /etc/ppp/ip-up started (pid 7771)
Script /etc/ppp/ip-up finished (pid 7771), status = 0x0
После вышеперечисленного код за его пределами или под ним не выполняется. Возвращается только если сценарий завершен.
Независимо от успешности или сбоя ppp-ссылки, я хотел бы получить значение «status» в моем коде c и принимать решения на его основе. У меня есть опыт работы на голом металле, но довольно новый для Linux. И было бы замечательно узнать мнение экспертов по этому вопросу и предложения о том, как этого добиться.