La definición del UNIX abierta() función cuando se utiliza con la bandera O_CREAT es que requiere un tercer argumento con nombre modo con el fin de establecer los privilegios de los archivos.bandera Unix O_CREAT sin el modo especificado
¿Qué pasa si ese modo no está especificado?
int file;
static const char filename[] = "test.test";
if ((file = open(filename, O_RDWR | O_CREAT | O_TRUNC)) == 1)
{
perror("Error opening file.");
exit(EXIT_FAILURE);
}
close(file);
¿Qué ocurre con el archivo que se crea con esas banderas? En mi sistema me sale:
-r--r-s--- 1 hyperboreean hyperboreean 0 2009-02-25 01:40 test.test
Una teoría es que la función de apertura se ve en la pila y cheques para el parámetro mode y termina usando un entero aleatorio que encuentra.
¿Qué dice la norma sobre esto?
Es por esto que se inventaron los prototipos de funciones. – womble
Tu comentario no tiene sentido. – SoapBox
No, de hecho. Y tampoco lo hizo el voto en baja. – cdonner