c - 将标准输出重定向到文件描述符似乎不起作用,为什么?

标签 c linux file redirect stdout

我测试过这个:

#include<unistd.h>
#include<fcntl.h>
int main()
{
    int fd=open("./testdup.txt",O_CREAT|O_RDWR,0666);
    dup2(STDOUT_FILENO,fd);
    write(STDOUT_FILENO,"mymy\n",5);
    close(fd);
    return 0;
}

编译并运行它,它仍然打印

mymy

与我预期的不同:写操作应该写入“testdup.txt”文件。 为什么它不起作用?

最佳答案

@TobyB 在这里是正确的。这段代码对我有用:

#include <unistd.h>
#include <fcntl.h>

int main(void)
{
    int fd = open("./testdup.txt", O_CREAT | O_RDWR, 0666);
    dup2(fd, STDOUT_FILENO);
    write(STDOUT_FILENO, "mymy\n", 5);
    close(fd);

    return 0;
}

dup2 的参数顺序在您的程序中不正确。

关于c - 将标准输出重定向到文件描述符似乎不起作用,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41420713/

相关文章:

C 跳过 getch

C void* 函数指针参数

linux - 在 bitnami lamp stack 中启用 phpmyadmin

java - Eclipse启动和ant启动以不同的编码生成文件

c# - C#StreamReader无法读取行

C编程sqrt函数

c - 获取函数指针以供其他函数使用

linux - 能不能在Windows上调试默认SDK Android模拟器的goldfish kernel 3.4? (即通过断点)

linux - 用于多重选择和命令输入的 Bash 脚本

C++ seekp(0,ios::end) 不工作