Linux C, создание нового файла с теми же разрешениями, что и у существующего файла - PullRequest
0 голосов
/ 21 октября 2019

Мне нужно создать программу, которая создаст новый или перезапишет существующий ( 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;
}

Я знаю это прямо сейчасЯ установил разрешение вручную.

...