La fonction linux mkdir ne peut pas autoriser une permission complète

Je teste la fonction mkdir pour créer un nouveau répertoire:

 folder = mkdir("./linux", 511); 

ou

  folder = mkdir("./linux", 0777); 

ou

 folder = mkdir("./linux", S_IRWXU | S_IRWXG | S_IRWXO); 

Comme vous pouvez le constater, j’essaie d’autoriser l’autorisation complète du répertoire, mais voici ce qui se présente avec ls -l | grep linux ls -l | grep linux :

 drwxr-xr-x 2 manuzhang manuzhang 4096 2012-01-04 06:53 linux 

Pourquoi ne puis-je pas autoriser l’écriture pour le groupe et les autres?

Mises à jour :
chose étrange, comme vous les gars m’a dit que j’ai essayé umask . Cela fonctionne avec umask(S_IWGRP) ou umask(S_IWOTH) mais échoue avec umask(S_IWGRP | S_IWOTH) , des idées?

    De l’ man 2 mkdir :

    Le mode argument spécifie les permissions à utiliser. Il est modifié par le processus umask de la manière habituelle: les permissions du répertoire créé sont (mode & ~ umask & 0777).

    Je vous suggère de regarder votre umask – il est probablement réglé sur 0022 . Essayez un post- mkdir .

    Les permissions définies par les appels système tels que mkdir et open sont toujours masquées par rapport à l’ umask du processus actuel. Vous pouvez changer le umask actuel en utilisant la fonction umask() ; assurez-vous de le remettre lorsque vous avez terminé.

    Vérifiez la fonction umask: man 2 umask