Lorsque j'écris sous Linux, il n'a pas réussi à créer un répertoire. Si je remplace le merci p> p> ~ code> avec le répertoire personnel développé, cela fonctionne bien. Quel est le problème avec l'utilisation de
~ code>? P>
3 Réponses :
~ code> est généralement étendu par la coque. Ne pas utiliser le shell signifie que vous êtes responsable de l'expansion à la place. P>
Voir le ~ code> est un caractère de méta shell, pas un "raccourci" fourni au noyau. P>
Wordexp (3) code>
ou < un href = "http://linux.die.net/man/3/glob" rel = "nofollow noreferrer"> glob (3) code> pages de l'homme si vous souhaitez supporter < Code> ~ code> facilement. (Ils peuvent faire beaucoup plus que vous le souhaitez.) P>
(Merci à O11C pour l'entrée GLOB (3) CODE>; il ne fait pas
~ code> mais est toujours utile.)
Oui, voici, voir glob_tilde code> (et
glob_tilde_check code>) dans cette page.
Mais si vous essayez: p> ceci fonctionne comme le si vous souhaitez utiliser le ~ code> est connu uniquement sur la coque et non à l'appel système code> mkdir code>.
"mkdir ~ / foo" code> est transmis à une coque et à une coque expandes
~ code> à
$ home code> p>
$ home code> avec
mkdir code>, Vous pouvez utiliser le
getenv code>
fonction Comme: p>
-1 pour donner un exemple de code avec un énorme problème de dépassement de tampon. Vous devez éditer ceci pour utiliser SNPRINTF ou vérifier la longueur de home code> avant d'appeler
sprintf code>.
@ R..githubstophelingice ou vous pouvez être un programmeur qui connaît la longueur maximale possible pour un répertoire de base et vous savez que max code> est au moins cette taille ou plus grande. Ces fonctions sont vraiment pour les personnes qui ne savent pas ce qu'ils font. C'est pourquoi ils n'existaient pas dans le passé quand les gens savaient comment programmer.
@Deanie: Il n'y a pas de longueur maximale sur la valeur de la variable d'environnement home code>, même s'il y a un maximum sur ce qui est un chemin de chemin valide. Le code tel qu'il est écrit est soumis au débordement de la mémoire tampon et à écrire un code mal comme celui-ci est exactement le contraire de "savoir programmer".