我正在编写代码将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。
发布于 2014-03-01 21:36:42
您需要在赋值周围加上一对括号,否则它是布尔表达式的赋值(如果文件确实可以打开,则返回0):
if ((newfd = creat("fout.txt", O_TRUNC | O_WRONLY)) == -1)https://stackoverflow.com/questions/22120661
复制相似问题