如何在C语言中将数据从一个进程传递到另一个进程?

4

有没有办法在c语言中从一个进程传递数据(例如int值)到另一个进程?

根据我的经验,我们只能从一个进程发送信号到另一个进程。但是似乎没有办法将一些信息“附加”到该信号以传递给另一个进程。


3
即使你无法将数据附加到信号上,你仍然可以使用信号,通过 SIGUSR1SIGUSR2 每次传输一个比特。;-) - R.. GitHub STOP HELPING ICE
5个回答

2

使用sigqueue函数,你可以同时传递一个整数或指针和信号(但需要注意的是,如果信号的目标是另一个进程,指针将无效,因为不同的进程不共享地址空间)。

其他一些方法包括管道、共享内存(POSIX或SysV样式)、文件等。


2
你可以使用各种可用的进程间通信机制。
使用谷歌搜索。你还可以参考这里

0

使用 Socket 是一种干净、便携、强大的方式。


0

您可以使用管道来实现这个功能。管道的主要目的是在不同进程之间传递数据。

管道是操作系统提供的最简单的进程间通信机制之一。管道是两个进程之间的通信缓冲区,它有两个描述符,一个用于写入另一个用于读取。写和读操作按照先进先出(FIFO)的顺序进行。

有两种类型的管道:无名管道和命名管道(也称为FIFO)。

  • 无名管道仅允许在层次关系上相关联的进程(父进程和子进程)之间进行通信;
  • 命名管道允许任何进程之间进行通信。通过在文件系统中创建特殊文件来实现。

如果您需要一些示例代码,请访问此处:http://pastebin.com/1W216nyN


-2

我认为我们可以在进程之间使用全局变量,但不确定。如果有人尝试过,请告诉我。如果我们使用包含外部变量的头文件,则可以在另一个main()中使用它,这只是一个独立的程序(进程)。但是我们必须将两个main()链接在一起才能执行。


1
不行,进程的内存空间是彼此隔离的。extern关键字用于声明来自其他编译单元(源文件)的外部变量。<br/>而且你不能“链接”两个main()函数。 - philant

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接