|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: May 2008
Città: Torino (TO)
Messaggi: 237
|
[C] Replicare i permessi di un file
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.
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
__________________
Microsoft Windows 10 Pro - Fractal Design Define R2 XL - Enermax Platimax 750W - MSI X99S GAMING 9 AC - Noctua NH-D15 - Intel Core i7-5820k - MSI GTX 970 GAMING 4G - 16 GB RAM Corsair Vengeance LPX DDR4 2400Mhz - Samsung 850 Evo 500GB - ASUS PB728QR - Tastiera Ducky Shine 4 - Mouse Logitech G700s |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jul 2011
Messaggi: 381
|
Ciao, per verificare se un file esiste dai un'occhiata alla funzione access()
Moooolto grezzamente: Codice:
if( access( fname, F_OK ) == 0 )
{
//file esiste
}
else
{
//crea file
//controlla se hai creato
//apri, scrivi, chiudi
}
Su Windows non ti so aiutare.
__________________
Concluso positivamente con: Kamzata, Ducati82, Arus, TheLastRemnant, ghost driver, alexbull1, DanieleRC5, XatiX |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: May 2008
Città: Torino (TO)
Messaggi: 237
|
Ho risolto con stat
Codice:
#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);
}
__________________
Microsoft Windows 10 Pro - Fractal Design Define R2 XL - Enermax Platimax 750W - MSI X99S GAMING 9 AC - Noctua NH-D15 - Intel Core i7-5820k - MSI GTX 970 GAMING 4G - 16 GB RAM Corsair Vengeance LPX DDR4 2400Mhz - Samsung 850 Evo 500GB - ASUS PB728QR - Tastiera Ducky Shine 4 - Mouse Logitech G700s |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 16:22.



















