cdsfiui 发表于 2015-01-29 17:38

[结贴]尝试给STDOUT_FILENO重新赋值来重定向IO,结果编译不过,帮我看看

本帖最后由 cdsfiui 于 2015-01-30 09:25 编辑

我写了一个非常小的程序,我是想把标准输出重定向到一个文件。我尝试使用posix的函数调用来做到这一点(而不是c运行时库的函数),源代码如下:
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<unistd.h>
int main()
{
int fd = open("m.txt", O_CREAT|O_RDWR);
STDOUT_FILENO=fd;
write(STDOUT_FILENO,"hw",2);
close(fd);
return 0;
}
g++报出编译错误:
g++ redirect.cpp && ./a.out
redirect.cpp: In function ‘int main()’:
redirect.cpp:8:16: error: lvalue required as left operand of assignment
   STDOUT_FILENO=fd;
这是什么含义? 我不能给STDOUT_FILENO赋值吗?

super皮波 发表于 2015-01-29 17:42

STDOUT_FILENO是常量,不能赋值

sunlw78 发表于 2015-01-30 09:15

STDOUT_FILENO是常量,程序这么写不对吧。

int fd = open("m.txt", O_CREAT|O_RDWR);
write(fd,"hw",2);
close(fd);
return 0;
页: [1]
查看完整版本: [结贴]尝试给STDOUT_FILENO重新赋值来重定向IO,结果编译不过,帮我看看