à l'aide de la sortie(1) de retour d'une fonction
linux gcc 4.4.1 C99
Que je me demande est-il un avantage en utilisant les techniques suivantes. J'ai remarqué avec un peu de code que j'ai lu le numéro de sortie est allé jusqu'en valeur, comme on le voit dans cet extrait de code.
/* This would happen in 1 function */
if(test condition 1)
{
/* something went wrong */
exit(1);
}
if(test condition 2)
{
/* something went wrong with another condition*/
exit(2);
}
ou de faire la suite et juste de retour:
/* This would happen in 1 function */
if(test condition 1)
{
/* something went wrong */
return;
}
if(test condition 2)
{
/* something went wrong with another condition*/
return;
}
OriginalL'auteur ant2009 | 2009-12-29
Vous devez vous connecter pour publier un commentaire.
exit() ferme l'ensemble de votre programme, et les rapports de retour de l'argument que vous lui transmettez. Cela permet à tous les programmes en cours d'exécution votre programme de comprendre pourquoi il a quitté de manière incorrecte. (1 pourrait signifier un échec de la connexion à une base de données, 2 pourrait signifier inattendu arguments, etc).
Retour renvoie uniquement en dehors de la fonction vous êtes, et non la totalité du programme.
OriginalL'auteur Tyler Smith
return
essentiellement de retour de la fonction et régler les pointeurs de pile de façon appropriée pour exécuter les instructions ci-dessous, où queexit
entraînera le programme lui-même de mettre fin.à l'aide de
exit()
dans une fonction indique l'erreur fatale et le programme ne peut pas récupérer et continuer et, par conséquent, il doit être arrêté.OriginalL'auteur aJ.
exit
ne sera pas de retour d'une fonction. Elle va sortir de l'ensemble du programmeOriginalL'auteur Trent
Je ne pense pas que vous voulez quitter le programme en entier, non?
Donc, juste de retour de la fonction, ce serait bien.
Vous pouvez également spécifier explicitement le type de retour de la fonction et d'utiliser la valeur de retour de juger si tout s'est bien passé ou pas.
OriginalL'auteur Prasoon Saurav
Vous nous demandez si vous devez retourner les codes d'erreur à partir de vos fonctions?
Bien cela dépend de la façon dont informative vous voulez être à vos utilisateurs. Si vous voulez agir comme la plupart des logiciels de lois et ouvre une boîte de dialogue modale qui dit
Alors il n'est pas nécessaire pour les codes de retour.
Si, toutefois, vous voulez votre logiciel afin d'être utile pour vos utilisateurs et leur faire savoir ce qui s'est passé, alors il vaut mieux fournir un certain type d'informations de diagnostic (les codes d'erreur au moins). Ensuite, vous pouvez afficher un message qui dit:
OriginalL'auteur Frank Krueger
Généralement c'est ainsi que le programme en cours d'exécution de votre programme peut prendre des décisions intelligentes.
Par exemple, si il y a un script dans votre programme foo, alors il pourrait vérifier l'
sortie argument en utilisant la variable $$ et modifier le chemin d'exécution:
exec foo
si $$ eq '0':
echo "Succès"
elif $$ eq '2':
exec de reprise après erreur de script
Alternativement, vous pouvez vous-même exécuter echo $$ pour voir quel était le code de sortie du programme.
Nous sommes tous les deux mal:)$? Mais vous avez raison de $$ est de pid du shell courant
OriginalL'auteur Methos
Si l'idée est de retourner la valeur fondée sur le test de la condition, préférez l'utilisation de retour au lieu de la sortie.
De retour 1, au lieu de la sortie(1), l'utilisation de retour 1.
Ne publiant pas les raisons, car il y a une discussion détaillée pour les mêmes dans ce lien.
OriginalL'auteur Narendra N