将标准输出重定向到文件描述符似乎不起作用,为什么?
Redirect stdout to file descriptor does not seems to work, why?
我测试了这个:
#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 的参数顺序不正确。
我测试了这个:
#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 的参数顺序不正确。