2017-02-08 2 views
-1

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

+1

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

+0

ce que votre code dit est "si tty_name! = NULL ou si tty_name == NULL". cela n'a aucun sens –

+3

'if (nom_tty || nom_tty == NULL)' est équivalent à 'if (nom_tty! = NULL || nom_tty == NULL)'. Autres questions? –

Répondre

0

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 
    } 
} 
+0

merci beaucoup ... J'ai martelé ça sans dormir. –

-1

L'expression de condition pour le traitement pointeur NULL doit être comme ceci:

si

+0

Oui. J'ai essayé cela mais toujours il se considère comme une valeur même si elle est NULL –

+0

Pourquoi devrait-on inclure '! Tty_name' dans la condition? – Gerhardh