Как обращаться с трубкой Unix - PullRequest
1 голос
/ 21 марта 2011

Как мне получить имя файла от перенаправления из оболочки в моем коде C ++? то есть ./MyProgram

** Редактировать: мне удалось получить входные данные из файла. Спасибо за помощь. Однако после циклического просмотра содержимого файла я хочу сохранить пользовательский ввод с помощью cin. Это так:

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

Ответы [ 2 ]

8 голосов
/ 21 марта 2011

Вы не можете (по крайней мере, не переносимо). Эта информация не предоставляется программе. Вместо этого вы можете получить доступ к данным из myfile (в вашем примере), читая из стандартного ввода. Например, вы можете использовать C ++ getline с cin в качестве первого параметра.

2 голосов
/ 21 марта 2011

В зависимости от оболочки вы, возможно, унаследовали дескриптор, представляющий фактический файл или канал.Если это настоящая труба (то есть fifo), название не будет много значить.Но вы можете получить имя в Linux (и в Windows, но это не похоже на то, что вы заинтересованы в этом).

См. Получение имени файла из дескриптора файла в C

...