我正在编写代码来将stdout重定向到一个文件(例如ls被返回到文件的结果),而dup2()函数不会重定向我的输出。这是我的代码:
void testDup()
{
int newft;
if(newfd = creat("fout.txt", O_TRUNC|O_WRONLY) == -1)
{
cout << "Open failed"<< endl;
exit(1);
}
dup2(newfd, 1);
cout << "this should be in the new file" < endl;
}
这不起作用。我只是将ls的输出输出到终端窗口。我已经采取措施检查dup2()确实返回1,而不是-1。
答案 0 :(得分:3)
你需要在赋值周围使用一对括号,否则它是对布尔表达式的赋值(如果确实可以打开文件则返回0):
if ((newfd = creat("fout.txt", O_TRUNC | O_WRONLY)) == -1)