Open() 输出不创建文件
Open() for output not creating file
我有这个功能利用 open 来设置 i/o 重定向:
void setOutput(char * buffer){
int file = open(buffer, O_WRONLY || O_CREAT, S_IWUSR);
if(file < 0){ printf("error opening %s for output\n", buffer); }
if(dup2(file, 1) < 0){ printf("error with dup2 opening %s for output\n", buffer); }
}
当我 运行 它时,它对已经定义的文件工作正常,但 returns -1 当它收到一个未创建的文件时。不知道为什么
您需要更改以下内容
int file = open(buffer, O_WRONLY || O_CREAT, S_IWUSR);
到
int file = open(buffer, O_WRONLY | O_CREAT, S_IWUSR);
格式:
int open( char *filename, int access, int permission );
access :应该作为位明智的 OR 运算符提供,这意味着使用 | 而不是 || 这是逻辑 OR
我有这个功能利用 open 来设置 i/o 重定向:
void setOutput(char * buffer){
int file = open(buffer, O_WRONLY || O_CREAT, S_IWUSR);
if(file < 0){ printf("error opening %s for output\n", buffer); }
if(dup2(file, 1) < 0){ printf("error with dup2 opening %s for output\n", buffer); }
}
当我 运行 它时,它对已经定义的文件工作正常,但 returns -1 当它收到一个未创建的文件时。不知道为什么
您需要更改以下内容
int file = open(buffer, O_WRONLY || O_CREAT, S_IWUSR);
到
int file = open(buffer, O_WRONLY | O_CREAT, S_IWUSR);
格式:
int open( char *filename, int access, int permission );
access :应该作为位明智的 OR 运算符提供,这意味着使用 | 而不是 || 这是逻辑 OR