gpt4 book ai didi

c - O_FLAGS 附加或创建文件。在 C unix 中使用 open()

转载 作者:太空宇宙 更新时间:2023-11-04 10:21:27 25 4
gpt4 key购买 nike

所以我有以下代码。 str_arr[] 只包含控制台命令的组合,例如 ls、sort.. 和文件名。 execute() 派生一个子进程。

for(int y=0; y<i-1; y++){
if(type_arr[y]==0){

}
else if(type_arr[y]==1){

}
else if(type_arr[y]==2){
int fw1=open(str_arr[y+1], O_WRONLY | O_APPEND | O_CREAT |S_IRWXU);
int sv_out1=dup(1);
dup2(fw1, 1);
close(fw1);
execute(str_arr[y]);
dup2(sv_out1, 1);
}
else if(type_arr[y]==3){
int fw=open(str_arr[y+1], O_WRONLY | O_TRUNC | O_CREAT, S_IRUSR | S_IRGRP | S_IWGRP | S_IWUSR);
int sv_out=dup(1);
dup2(fw, 1);
close(fw);
execute(str_arr[y]);
dup2(sv_out, 1);
}
}

type_arr[y]==3时,如果文件存在,代码应该创建或覆盖文件。这行得通。然而,当 type_arr[y]==2 代码应该创建或追加文件时,这是行不通的,事实上,如果文件存在(使用 ls),它只会正常打印到控制台,如果文件确实存在确实创建了一个新文件。这里有什么问题吗?这些 O_FLAGS 应该附加或创建文件吗?

最佳答案

要附加或创建文件,请使用:

int fw1=open(str_arr[y+1], O_WRONLY | O_APPEND | O_CREAT, FILE_PERMISSIONS);

并使用文件权限的第三个参数(例如:FILE_PERMISSIONS = 0777)

关于c - O_FLAGS 附加或创建文件。在 C unix 中使用 open(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43700630/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com