Мне нужно создать программу, которая создаст новый или перезапишет существующий ( outfile ) файл с содержимым уже существующего файла ( infile ). Для меня это легко, я уже сделал это. Но моя проблема в том, что outfile должен иметь такое же разрешение, что и infile , и я не знаю, как это сделать.
programName infile outfile
Мой код выглядит следующим образом, я думаю, что мне нужно использовать stat () или fstat (), но я не совсем уверен, как.
#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/stat.h>
int main(int argc, char** argv) {
char* infile = argv[1];
char* outfile = argv[2];
int in = open(infile, O_RDONLY, S_IRUSR);
int out = open(outfile, O_CREAT | O_WRONLY, S_IRUSR | S_IWUSR);
long len = lseek(in, 0L, SEEK_END);
char buf[len];
lseek(in, 0L, SEEK_SET);
read(in, &buf, len);
write(out, &buf, len);
close(in);
close(out);
return 0;
}
Я знаю это прямо сейчасЯ установил разрешение вручную.