dup2重定向标准输出失败了,为何呢
dup2重定向标准输出失败了,为什么呢?
我尝试重定向标准输出到一个文件里面,如下所示的程序:
编译运行,命令行输出
并没有如我所期望的被重定向到了一个文件里面去。
而且这个新创建的x.txt文件的权限,看起来也没有我所设置的权限,而且很奇怪的多了一个"set-user-id"位:
这是为什么呢? 我的程序错在哪里
------解决思路----------------------
dup2(1,fd); ====> dup2(fd, 1);
------解决思路----------------------
删掉x.txt,然后再次运行这个程序,结果就对了。
我尝试重定向标准输出到一个文件里面,如下所示的程序:
#include<sys/types.h>
#include<sys/stat.h>
#include<unistd.h>
#include<fcntl.h>
#include<stdio.h>
#include<stdlib.h>
int main(int argc, char *argv[])
{
int fd=open("x.txt",O_CREAT|O_RDWR|S_IWUSR|S_IRUSR|S_IRGRP|S_IWGRP);
dup2(1,fd);
write(1,"hello world\n",12);
printf("myself\n");
close(fd);
return 0;
}
编译运行,命令行输出
~$ g++ n.cpp && ./a.out
hello world
myself
并没有如我所期望的被重定向到了一个文件里面去。
而且这个新创建的x.txt文件的权限,看起来也没有我所设置的权限,而且很奇怪的多了一个"set-user-id"位:
-rwS-wx--- 1 a a 0 4月 29 13:03 x.txt*
这是为什么呢? 我的程序错在哪里
------解决思路----------------------
dup2(1,fd); ====> dup2(fd, 1);
------解决思路----------------------
删掉x.txt,然后再次运行这个程序,结果就对了。