2017-07-11 11 views

Répondre

3

Quand je comprends la page de manuel de open correctement la combinaison de O_DIRECTORY et O_CREAT ne vise pas:

O_DIRECTORY devrait échouer si le nom de fichier ne spécifie pas un répertoire. J'interprète "un répertoire" comme "un répertoire existant" ici. Vous pouvez d'abord utiliser mkdir en premier. mkdir retournera un code d'erreur si le répertoire existe déjà. Vous ignorez simplement la valeur renvoyée par mkdir. Ensuite, vous ouvrez le fichier avec O_DIRECTORY:

mkdir(the_file_name, your_desired_mode); 
f = open(the_file_name, O_DIRECTORY); 
+0

Donc, il y a une erreur dans la mise en œuvre de 'open', car il ne retourne pas d'erreur pour signaler une mauvaise combinaison d'arguments. – user3368561