如何在 C++ 中执行 os.getpid()?
Posted
技术标签:
【中文标题】如何在 C++ 中执行 os.getpid()?【英文标题】:How do I do os.getpid() in C++? 【发布时间】:2010-02-13 12:09:32 【问题描述】:这里是新手。我正在尝试制作一个从 python 创建的命名管道读取的 c++ 程序。我的问题是,python 创建的命名管道使用 os.getpid() 作为管道名称的一部分。当我尝试从 C++ 调用管道时,我使用 getpid()。我没有从 c++ 获得相同的价值。 os.getpid 在 c++ 中是否有等效的方法?
谢谢!
编辑:
抱歉,我实际上是使用 os.getpid() 通过 ProcessIDtoSessionID() 获取会话 ID。然后我使用会话 ID 作为管道名称的一部分
【问题讨论】:
没有标准的 C++ 方式。这取决于您的操作系统或您使用的库/框架。请提供更多信息。 你认为“价值不一样”是什么意思? getpid() 返回进程 id - 每次调用它都会不同(可能)。 这不是预期的吗?由于您使用的是管道,它们最终是不同的过程,对吧? 【参考方案1】:您不会获得相同的进程 ID,因为您的 python 程序和 c++ 程序在不同的进程中运行,因此具有不同的进程 ID。所以通常使用不同的逻辑来命名您的 fifo 文件。
【讨论】:
我明白了。谢谢。我使用 os.getpid() 作为 pywin32 的 ProcessIDtoSessionID 的参数来获取会话 ID。我会尝试使用不同的方法。再次感谢!【参考方案2】:如果您作为单独的进程运行,您不会获得相同的值,因为每个进程都有自己的进程 ID。寻找其他方法来识别管道。
【讨论】:
【参考方案3】:标准库不提供文件以外的任何东西。您将需要使用其他一些特定于操作系统的 API。
【讨论】:
【参考方案4】:您无法轻松地从 C++ 程序中检索 Python 解释器的 PID。
要么为命名管道分配一个常量名称,要么如果你真的需要同一个 Python 程序的多个管道,创建一个临时文件,Python 程序将它们的 PID 写入其中(使用文件锁定!) - 然后您可以从 C++ 程序中读取 PID。
【讨论】:
以上是关于如何在 C++ 中执行 os.getpid()?的主要内容,如果未能解决你的问题,请参考以下文章
R 等效于 python 的 os.getpid() 用于并行处理
多任务编程 -- 进程相关函数 os.getpid()os.getppid()os._exit()sys.exit()