gpt4 book ai didi

c++ - 创建写入终端的附加文件描述符

转载 作者:行者123 更新时间:2023-11-30 05:38:33 24 4
gpt4 key购买 nike

是否可以创建(从 shell/Bash 或在 C++ 程序中)一个额外的文件描述符,如 STDOUT/STDERR? IE。默认情况下,它应该将所有输出写入终端并混合两种输出,但如果我愿意,我可以有选择地重定向它们?

我的用例是一个以多程序多数据 (MPMD) 模式运行的 MPI 并行 C++ 程序,即几个不相关的功能实体使用不同的数据集同时运行。我想要实现的是,默认情况下,所有输出都发送到终端,但我可以将一个或多个输出流重定向到例如一个文件。

最佳答案

标准输出和标准错误的文件描述符分别为 1 和 2。启动程序时,文件描述符默认由子进程继承。因此,如果您在启动程序之前打开一个文件描述符(例如 3),它将能够像使用另一个特殊的 FD(如 stdout 或 stderr)一样使用它。可以在bash中打开一个FD这样写:

exec 3>/some/file

但是请注意,虽然 shell 通常将打开的文件描述符传播给它们的子程序,但一些生成其他程序的程序可能有不同的策略。例如,nohup 重定向标准 FD 但不触及任何其他 FD。其他程序虽然不太可能,但可能会关闭所有高于 2 的 FD。

关于c++ - 创建写入终端的附加文件描述符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32692727/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com