PDA

View Full Version : [C] Replicare i permessi di un file


ashtisdale93
03-08-2013, 10:56
Visto che continuano a propinarmi esercizi con la stessa richiesta e visto che non so proprio dove sbattere la testa chiedo umilmente il vostro aiuto. :help:

La traccia è la seguente:

Sia File1 un file lungo 6 byte.
Scrivere un programma C che accoda il contenuto di File1 a File2, ricevendo da linea di comando i nomi dei file File1 e File2, dove
1) se File2 esiste allora viene accodato a File2 il contenuto di File1,
2) se invece File2 non esiste allora File2 viene prima creato con gli stessi permessi di File1 e dopo avviene l’accodamento.

Come risolvereste il secondo punto? Cioè come faccio a creare un file con gli stessi permessi di un file già esistente?

Grazie mille a chi saprà illuminarmi :D .

starfred
03-08-2013, 12:14
Ciao, per verificare se un file esiste dai un'occhiata alla funzione access()

Moooolto grezzamente:
if( access( fname, F_OK ) == 0 )
{
//file esiste
}
else
{
//crea file
//controlla se hai creato
//apri, scrivi, chiudi
}

Per il discorso permessi su un sistema operativo unix like ti consiglio di dare un'occhiata alle funzioni fstat() fchmod() fchown()
Su Windows non ti so aiutare.

ashtisdale93
03-08-2013, 14:25
Ho risolto con stat :).

#include <sys/stat.h>
#include <stdio.h>
int main()
{
struct stat buffer;
mode_t file1_mode;
if(stat("FILE1",&buffer) != 0)
{printf("stat error!\n"); return -1;}
file1_mode = buffer.st_mode;
umask(file1_mode);

}