Bonjour, je ne sais pas pourquoi je ne peux pas vérifier si le pointeur est NULL ou non. J'essaie de vérifier si task-> signal-> tty-> name a un nom ou une valeur NULL mais il s'identifie réellement comme un NULL même s'il a un nom. J'ai utilisé la simple fonction d'itération suggestions? en ce qui concerne ce problème?Impossible de gérer les pointeurs NULL dans le module du noyau
Répondre
Vous devriez essayer comme ça (tty_name || tty_name == NULL!):
for_each_process(task) {
char *tty_name = NULL;
if (task && task->signal && task->signal->tty)
tty_name = task->signal->tty->name;
if (tty_name == NULL) {
// Handle NULL pointer
} else {
// Handle valid pointers
}
}
merci beaucoup ... J'ai martelé ça sans dormir. –
L'expression de condition pour le traitement pointeur NULL doit être comme ceci:
si
Oui. J'ai essayé cela mais toujours il se considère comme une valeur même si elle est NULL –
Pourquoi devrait-on inclure '! Tty_name' dans la condition? – Gerhardh
Qu'est-ce que vous pensez, la première partie de votre état va évaluer? Et alors quel sera le résultat global de l'expression? – Gerhardh
ce que votre code dit est "si tty_name! = NULL ou si tty_name == NULL". cela n'a aucun sens –
'if (nom_tty || nom_tty == NULL)' est équivalent à 'if (nom_tty! = NULL || nom_tty == NULL)'. Autres questions? –