我正在编写代码以将标准输出重定向到文件(例如将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):
if ((newfd = creat("fout.txt", O_TRUNC | O_WRONLY)) == -1)