Anzeige:
Ergebnis 1 bis 4 von 4

Thema: [C/Systemcalls] Rechte für Datei auslesen

  1. #1
    Registrierter Benutzer
    Registriert seit
    04.04.2006
    Beiträge
    29

    [C/Systemcalls] Rechte für Datei auslesen

    Hallo, ich möchte ein Programm schreiben, das eine Datei byteweise kopiert.
    Dabei soll die Zieldatei, die selben rechte haben, wie sie die orginal Datei hat.
    Code:
      handler_read = open(orginaldatei, O_RDONLY );
      int rechte = 0777;//soll eigentlich sein:  orginaldatei.getRechte()???
      handler_write = open(copydatei, O_WRONLY |O_CREAT |O_TRUNC, rechte);
    Was würde mit den Rechten der copydatei geschehen, wenn sie bereits existiert?
    1. Die Orginalrechte bleiben bestehen?
    2. Die Rechte von orginaldatei gelten auch für copydatei?


    Vielen Dank für eure Hilfe,
    Thomas

  2. #2
    Registrierter Benutzer
    Registriert seit
    14.01.2002
    Beiträge
    657
    die rechte der datei kannst du mit dem systemcall stat [1] holen.
    der zweite parameter ist ein pointer auf ne struct stat. dort wird
    im feld st_mode gespeichert welche zugriffsrechte die datei hat.

    die rechte werden von open, falls O_CREAT angegeben ist
    entsprechend den flags gesetzt.

    Anmerkung:
    eine Datei byte Weise zu kopieren ist ziemlich inperformant.
    Benutz lieber einen Buffer der eine Speicherseite also 4096 Bytes
    groß ist.

    [1] http://linux.die.net/man/2/stat
    Geändert von msi (18-10-2008 um 13:51 Uhr)

  3. #3
    Registrierter Benutzer
    Registriert seit
    04.04.2006
    Beiträge
    29
    Cool, es klapt. Danke.

    P.S, Die Größe 1 Byte wurde vorgegben (Aufgabe in der Uni).

  4. #4
    Registrierter Benutzer
    Registriert seit
    07.05.2007
    Beiträge
    656
    Moin,

    Zitat Zitat von msi Beitrag anzeigen
    ...die rechte werden von open, falls O_CREAT angegeben ist entsprechend den flags gesetzt...
    nach meiner Info nicht ganz (aus man 2 open):
    Code:
    The argument mode specifies the permissions to use in case a
    new file is created. It is modified  by  the process's umask in the usual
    way: the permissions of the created file are (mode & ~umask).
    Deine Aussage stimmt also nur, wenn umask auf 000 sitzt.

    Jan

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •