Open()表示输出没有创建文件

use*_*886 0 c file-io

我有这个函数,利用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); }

}
Run Code Online (Sandbox Code Playgroud)

当我运行它时,它适用于已定义的文件,但在收到未创建的文件时返回-1.不知道为什么

Kav*_*uwa 5

您需要更改以下内容

int file = open(buffer, O_WRONLY || O_CREAT, S_IWUSR);
Run Code Online (Sandbox Code Playgroud)

int file = open(buffer, O_WRONLY | O_CREAT, S_IWUSR);
Run Code Online (Sandbox Code Playgroud)

格式:

int open( char *filename, int access, int permission );

访问:应该作为一个明智的OR运算符提供,这意味着使用| 不是|| 这是逻辑OR