如何处理 Unix 管道

发布于 2024-10-24 03:00:43 字数 332 浏览 3 评论 0原文

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

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

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

How do I get the filename from redirection from the shell in my C++ code? i.e. ./MyProgram < myfile , I want to get myfile as the filename and its content line by line.

**Edit: I managed to get the input from file. Thanks for the help. However, after the looping through the file content, I want to keep user input with cin. It's like this:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

殤城〤 2024-10-31 03:00:43

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

You can't (at least not portably). This information is not provided to the program. Instead, you can access the data from myfile (in your example) by reading from standard input. E.g., you can use C++'s getline with cin as the first parameter.

过去的过去 2024-10-31 03:00:43

根据 shell,您可能继承了代表实际文件或管道的描述符。如果它是一个实际的管道(即 fifo),那么这个名称就没有多大意义。但你可以在 linux 上得到这个名字(在 Windows 上也可以得到这个名字,但听起来你对此不感兴趣)。

请参阅在 C 中从文件描述符获取文件名

Depending on the shell, you may have inherited a descriptor representing an actual file or a pipe. If it's an actual pipe (i.e. fifo), the name won't mean much. But you can get the name on linux (and on Windows, but it doesn't sound like you're interested in that).

See Getting Filename from file descriptor in C

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文