Utilisation de open() de l'appel système
Je suis en train d'écrire un programme qui écrit la sortie dans un fichier. Si ce fichier n'existe pas, je veux créer des.
Actuellement, je suis en utilisant les indicateurs suivants lors de l'appel ouvert:
O_WRONLY | O_CREATE
Toutefois, lorsque cela crée le fichier, il ne veut pas me donner des autorisations à écrire...
Comment puis-je utiliser l'open de sorte qu'il crée un fichier si il n'existe pas, mais va créer avec les autorisations nécessaires en cas de besoin?
Merci!
OriginalL'auteur samoz | 2009-02-27
Vous devez vous connecter pour publier un commentaire.
Vous avez probablement besoin de le troisième argument. Par exemple:
J'ai une légère préférence pour @David utilisation du drapeau de constantes (S_IRUSR | S_IWUSER | S_IRGRP | S_IROTH) plutôt que de codé en dur permanentes, mais sinon une bonne réponse.
Oui, sa réponse est mieux. Le mien est simplement un rapide pointeur vers le troisième argument (ma chaîne n'est pas encore valide!).
OriginalL'auteur Randy Proctor
Suffit d'utiliser la troisième argument optionnel à
open
:donc comme ceci:
Voir
man open(2)
.man 2 open
.Ce n'est pas
S_IWUSER
..saS_IWUSR
S_IWUSR 00200 utilisateur a la permission d'écriture, merci de lire man7.org/linux/man-pages/man2/open.2.html
OriginalL'auteur David Z
Sur Linux il y a une troisième argument que vous pouvez utiliser pour transmettre des autorisations. S_IWUSR doit être le drapeau de vous donner des autorisations d'écriture, mais dans la pratique, vous voudrez probablement utiliser plus de drapeaux que de simplement que l'on (bit à bit ou avais). Vérifiez la page de manuel pour une liste de l'autorisation de drapeaux.
OriginalL'auteur Dan Olson
De la manuel:
Il semble donc que vous avez besoin pour passer un troisième argument en spécifiant le fichier désiré autorisations.
OriginalL'auteur David Hanak
Noter qu'en vertu de la norme POSIX (Unix, Linux, MacOS, etc), vous pouvez ouvrir et de créer un fichier avec toutes les autorisations que vous choisissez, y compris de 0 (pas d'autorisation pour n'importe qui), et pourtant toujours écrire dans le fichier si le fichier ouvert en écriture.
OriginalL'auteur Jonathan Leffler