Mein Code ist wie folgt:„Creat“ gibt Funktion falsche Berechtigungen
#include "unistd.h"
#include <fcntl.h>
#define BSIZE 50
int main(int argc, char *argv[]) {
int f1, f2;
char buf[BSIZE];
f1 = open(argv[1], 0x0001, 0);
f2 = creat(argv[2], 0777);
read(f1, buf, BSIZE);
write(f2, buf, BSIZE);
return 0;
}
Wenn ich eine Datei mit dem Namen ‚a‘ und verwenden Sie das kompilierte Programm mit dem Befehl erstellen
./a.out a b
Es erstellt eine Datei mit dem Inhalt von 'a' in der Tat. Aber mein Problem ist, seine Berechtigungen sind -rwxr-xr-x
. Es gibt keine Schreibberechtigungen für Gruppen und andere. Außerdem, wenn ich die Funktion zu creat(argv[2], 0022);
ändere, würde die Erlaubnis alle 0 s ----------
werden.
Gibt es etwas falsch mit der creat
Funktion? Weil chmod
gut funktioniert.
Ihre Erklärung von 'umask' hat meine Frage sehr gut erfüllt. Vielen Dank. –