Linux C,使用与现有文件相同的权限创建新文件
我必须创建一个程序,创建一个新的或覆盖现有(outfile)文件,内容已经存在的文件(infle)。对我来说,这很容易,我已经做到了。但我的问题是,outfile需要和infle拥有相同的权限,我不知道如何做到这一点 程序名填充输出文件 我的代码是这样的,我认为我需要使用stat()或fstat(),但我不确定如何使用Linux C,使用与现有文件相同的权限创建新文件,c,file,permissions,C,File,Permissions,我必须创建一个程序,创建一个新的或覆盖现有(outfile)文件,内容已经存在的文件(infle)。对我来说,这很容易,我已经做到了。但我的问题是,outfile需要和infle拥有相同的权限,我不知道如何做到这一点 程序名填充输出文件 我的代码是这样的,我认为我需要使用stat()或fstat(),但我不确定如何使用 #include <fcntl.h> #include <stdio.h> #include <unistd.h> #include <
#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;
}
#包括
#包括
#包括
#包括
int main(int argc,字符**argv){
char*infle=argv[1];
char*outfile=argv[2];
int in=打开(仅填充、O_RDONLY、S_IRUSR);
int out=打开(输出文件,O|U创建| O|U WRONLY,S|U IRUSR | S|U IWUSR);
长透镜=lseek(英寸,0升,寻道端);
char-buf[len];
lseek(英寸,0升,寻道集);
读(in,&buf,len);
写(出,&buf,len);
关闭(in);
收尾;
返回0;
}
我知道现在我已经手动设置了权限 使用
stat()。这也有避免可能的竞争条件的优点