2017-10-09 14 views
-2

J'essaie d'imprimer le code retour de exit() systemcall. Mais depuis la sortie du programme, il n'a pas la chance d'imprimer quelque chose qu'il sera tué. Ma question est comment puis-je imprimer ce code retour dans le programme.Comment un programme c peut-il imprimer la valeur de retour de exit() alors qu'il se ferme?

y = syscall(NR_mycall); //makes an exit in this second 
printf("%s\n", strerror(y)); 

Comme prévu aucune sortie! : U (

+0

Vous ne pouvez pas. Pourquoi voulez-vous? –

+2

Pourquoi? Cela ressemble à un problème XY! Votre programme passe le code retour en appelant 'exit()' alors pourquoi ne pas l'imprimer * avant *? –

+0

demandez-vous: puis-je me suicider et aller au pub? –

Répondre

0

Si vous appelez exit() de plusieurs endroits dans votre programme, et vous voulez savoir quel code de sortie a été utilisé dans ces appels de sortie, puis au lieu d'utiliser exit, utilisez setjmp dans main et utiliser longjmp dans votre code où exit et passez le code d'erreur/de sortie dans l'appel longjmp. Maintenant le principal saura quel exit/code d'erreur a été utilisé

0

Vous ne pouvez pas imprimer le statut de sortie, ce que je recommande est de vérifier le statut de sortie dans votre terminal avec echo $? après l'exécution d'un fichier qui va l'imprimer ou passez au http://bashrcgenerator.com/ et faites-vous une invite personnelle et ajoutez le 'statut de sortie' pour que vous voyiez le statut de sortie dans votre invite à chaque fois.