2009-08-27 16 views
6

La siguiente línea en mi programa C debe proporcionado Todos/grupo/usuario leer y escribir permisospermisos de archivo mkfifo no se ejecutan correctamente

mkfifo("/tmp/dumbPipe", 0666) 

Pero una vez que ejecuto el código y echa un vistazo a la autorización no de la escritura se establecieron los bits, termino con

prw-r--r-- 

los propietarios son los mismos, ¿es un problema ya que estoy creando la tubería en el directorio tmp? Cuando ejecuto chmod 666 desde la línea de cmd, todos los permisos se configuran correctamente.

Respuesta

9

Esta es una publicación sin comentarios, simplemente citando manuales. Brievity etc.

Presupuesto de hombre mkfifo 3:

Es modificado por la máscara de usuario del proceso de la forma habitual: los permisos del fichero creado son (modo & ~ umask).

Presupuesto de hombre 2 umask

El valor por defecto típico de la máscara de usuario proceso es S_IWGRP | S_IWOTH (octal 022). En el caso habitual en el que el argumento de modo que abierta se especifica (2) como:

 S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH 

    (octal 0666) when creating a new file, the permissions on the resulting file will be: 

     S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH 

    (because 0666 & ~022 = 0644; i.e., rw-r--r--). 
0

Salam, sé que es tarde, pero para otros usuarios decido a escribir este comentario Incluso si 0666 preciso como permiso, debe saber que hay otro factor que se denomina "creación de modo de archivo de proceso", entonces la pregunta es:

cómo cambiar la creación del modo de archivo de proceso actual?

respuesta: el uso umask (permiso) en el comienzo de su programa - y dar a 0000 como un permiso

http://www.cyberciti.biz/tips/understanding-linux-unix-umask-value-usage.html

esto debería ayudar.

Cuestiones relacionadas