c - C 中的管道 - 我必须使用 fork 吗?

标签 c linux process pipe inter-process-communicat

假设我在 Linux 环境中只使用 C。

通常,如果您想使用 pipe() 函数,您会创建一个管道然后将其 fork ,从而允许父项与子项通信,反之亦然。

但是如果不是父子呢?如果我有一个正在运行的旧进程,是否可以使用 pipe() 函数与其通信?这个进程不是我当前进程的父进程(或以任何方式与之相关),但我有它的 pid。我是否仅限于文件或套接字进行进程间通信?

有什么方法可以在不使用套接字的情况下指定 pid 并从中接收信息?

最佳答案

对于你的问题

But what if It's not a parent and child? If I have an old process that's running, is it possible to communicate with it using the pipe() function?

您将无法与不是由父进程创建的任何其他进程通信。从技术上讲,你不应该被允许这样做。

您需要通过操作系统或使用其他 IPC 机制来实现此功能。

正是由于这个主要原因,数据库才被广泛使用。多个进程将能够读取数据并将数据写入单个数据库。防止多次更新。

关于c - C 中的管道 - 我必须使用 fork 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26728181/

相关文章:

c - 对这一灾难性声明的解释正确吗?

linux - 制作-j 8 g++ : internal compiler error: Killed (program cc1plus)

c# - 在应用程序退出时停止 Java 进程

c++ - 如何查询正在运行的进程的参数列表? ( window ,C++)

c - 在 C 中实现拼写检查器 : Valgrind reports memory errors

c++ - 操作系统提供的抽象

c++ - 链接分配对性能有何影响

java - 通过使用 eclipse 运行 .sh 文件来调试应用程序

linux - 如何安全地在Linux命令行上解压缩文件

java - 如何使用 java.lang.process 运行多个 Linux 命令?