将 stderr 从一个进程写入另一个进程 c++/unix
Writing stderr from one process to another process c++/unix
我有一个应用程序,其中父进程通过分布式农场系统(如 lsf/vnc)启动作业。现在我想要的是,每当任何作业启动在其各自的日志中报告任何错误时,错误都应重定向到父进程的主标准输出屏幕。这样就无需单独监视每个作业的日志。我从未在我的代码中使用过管道/信号量,但如果需要,我可以学习。
请提出一些有效的解决方案。我正在研究Linux/Solaris平台。
谢谢
根据启动子流程的方式,有不同的机制来设置其标准句柄。
通常,您必须将其 stderr 句柄设置为与您的 stdout 句柄相同。
请记住,这与你提到的"日志"无关;这是关于你的主题所说的(重定向stderr)。
如果您希望子项的 stderr与父项的 stdout 相同,那么您可以简单地启动父项,将其 stderr 与其 stdout 绑定。 如果cmd
是启动父级的命令,请尝试:
$ cmd 2>&1
您可能应该使用 dup2() 库调用,以便将子进程中的 STDERR 复制到所需的文件描述符,例如复制到任何其他描述符的 STDOUT,该描述符可以在父进程之前打开,并在 fork() 之后由子进程继承。尝试阅读"dup2"呼叫的马努拉页面。
相关文章:
- 如何在C++中将函数发送到另一个进程
- 如何从另一个进程解开全局钩子?
- 如何使用带有矢量的 winapi 读取进程内存从另一个进程读取缓冲区?
- 从不同进程中的另一个线程挂起/恢复线程或进程
- 是否可以将子进程的 stdout 重定向到父进程中的另一个文件?
- 如何在MPI中将矩阵从一个进程转移到另一个进程
- 将vector<vector<double>>从x86平台中创建的一个进程发送到x64中构建的另一个进程的最快方法是什么
- 通过 c++ 中的 udp 套接字将派生类对象从一个进程发送到另一个进程
- C++ 减慢另一个正在运行的进程
- 与 Python 中子进程中的另一个应用程序的交互式会话
- 如何:监视Windows中另一个进程的文件访问?
- 是否可以注入一个进程并获取给定的句柄,然后使用它们注入另一个进程
- 尝试启动另一个进程并通过 MPI 加入它,但获得访问冲突
- 将窗口句柄从一个进程使用到另一个进程(插件 vst 音频)
- 启动另一个进程的最佳方式C++?
- 异步是否总是在C++中使用另一个线程/内核/进程
- Win32/Gdigrab - 如何将另一个进程窗口设置为无边框
- 为什么我不能用这个函数在Qt框架中打开另一个进程?
- 如何使用 C# 在 Windows 中获取另一个进程库地址
- 如何在没有窗口类的情况下编写QT系统托盘应用程序,并将其与另一个进程集成