c - Open() 输出不创建文件

标签 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); }

}

当我运行它时,它对已经定义的文件工作正常,但当它收到一个未创建的文件时返回 -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

关于c - Open() 输出不创建文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28497241/

相关文章:

c - 无法使用正确的节点创建堆栈

c++ - C/C++ 中的非线程安全文件 I/O

c - c语言中不同指针初始化方式的区别

控制 makefile 的输出

java - 如何使用FileWriter将内容写入文件中的特定位置?

java - 如何在Java中检测USB驱动器

C - 运行可执行文件并等待它完成

java - 对目录中的所有文件执行操作

c - 使用指针查找字符串中的第一个字符

c - 在 C 中询问名称并返回名称的长度