如何处理Unix管道

时间:2011-03-21 02:40:15

标签: c++ unix pipe

如何在C ++代码中从shell重定向获取文件名?即./MyProgram< myfile,我想逐行获取myfile作为文件名及其内容。

**编辑:我设法从文件中获取输入。谢谢您的帮助。但是,在循环遍历文件内容之后,我想用cin保持用户输入。就像这样:

while (true)
{
    if (cin.eof() == false)
    {
        getline(cin, line);
        cout << line;
    }else{
        cin >> choice;
    }
}

2 个答案:

答案 0 :(得分:8)

你不能(至少不能携带)。该信息未提供给该计划。相反,您可以通过读取标准输入来访问myfile(在您的示例中)中的数据。例如,你可以使用C ++的getlinecin作为第一个参数。

答案 1 :(得分:2)

根据shell的不同,您可能继承了表示实际文件或管道的描述符。如果它是一个实际的管道(即fifo),这个名字并不意味着什么。但是你可以在Linux上获得这个名字(在Windows上,但听起来你并不感兴趣)。

请参阅Getting Filename from file descriptor in C