Datei Infos ändern in C..

Hallo,
mit fstat() kann man unter Linux die Infos einer Datei(user ID, größe der Datei usw.) in eine Struktur speichern und auslesen. Kann man diese Infos dann eigentlich änderen? Wenn ja, wie?
 
Die Struktur stat ist imho lediglich dazu da informationen zu erhalten...
Willst Du einige dieser Elemente dann aendern musst zu anderen, genau dafuer vorhandene Funktionen greifen...

Willst Du z.B. die Attribute aendern..ob ausfuerhrbar und fuer wen..etc.
musst Du chmod() benutzen...

z.B.

#include <sys/types.h>
#include <sys/stat.h>

int main(int argc, char *argv[] )
{
struct stat datei;

if ( chmod (argv[1],S_IRWXU | S_IRGRP | S_IXGRP ) < 0)
printf("\nerror\n");

return(0);
}

Hiermit setzt Du z.b. einige "x" an eine als argument uebergebene Datei...

Andere Sachen wie groesse, datum .......ka ob das geht...
..ausser den ueblichen wegen ..;)

Ansonsten beschreib mal genauer, was du wissen willst...

:wq!
 
Ok, das hilft mir schon etwas weiter*g.
Ich hoffte eigentlich das man die Änderungen in eine Struktur speichertund diese dann irgendwie "in die Datei laden kann". Ich will eigentlich nur wissen wie man alle Infos änderen kann oder ob(bzw wie) das geht.
 
Ob Du einige Teile der Struktur aendern koenntest, nachdem Du die infos gelesen hast ?....jo..

Wenn es dir nur darum geht ausgaben zu verfaelschen ...dann ist das wohl machbar..
..
aber wenn du mal herausfinden solltest wie das geht..dann poste das mal :)

:wq!
 
Anscheinend kann man mit utime() bzw utimes() das Zugriffsdatum einer Datei änderen. Und mit chown() den Benutzer, aber über das verfälschen der Größe einer File hab ich noch nix rausgefunden.
PS: Bin mir noch nicht ganz sicher ob man mit utime() bzw utimes() die Zeit wirklich verfälschen kann oder ob man sie nur auf die aktuelle Zeit stellen kann.
 
Ja...mit utime ()kannst Du die zugrifsszeit und die modifikationszeit aendern..

das kommt dann in struct utimbuf:

struct utimbuf
{
time_t actime;
time_t modtime;
}
..utimes ist aehnlich speichert jedoch in struct timeval

allerdings kannst du die zeit der letzten aenderung durch utime nicht aendern..:)
..allerdings ..und witzigerweise kann man, wenn man diese funktionen zur hilfe nimmt eine Datei kopieren..und die "alten" daten mit uebernehmen..

was die groessen einer datei angeht...steht in struct stat
...
cu

:wq!
 
Zurück
Oben