标签: ipc

管道的一端是否同时具有读和写 fd?

据我了解,管道的一端既可以读写 fd,另一端也可以读写 fd。这就是为什么当我们使用 using 写入时fd[1],我们关闭了读取端,例如fd[0]管道同一侧的读取端,而当我们从第二端读取 using 时,fd[0]我们关闭了fd[1]该端的读取端。我对么?

pipe ipc

7
推荐指数
2
解决办法
1万
查看次数

如何在 Linux 中增加信号量数组的数量?

在运行 postgresql 的 Debian lenny 服务器中,我注意到缺少信号量数组会阻止 Apache 启动。

查看限制,我看到最多 128 个数组中使用了 128 个数组,用于信号量。我知道这是问题所在,因为它发生在semget通话中。

如何增加数组的数量?

PS:我需要运行 Apache 才能使用 phppgadmin。

linux semaphore limit ipc

6
推荐指数
1
解决办法
3万
查看次数

创建用于进程间通信的终端设备

我想知道如何创建一个终端设备来模拟通过串口连接的一块硬件。基本上,具有特定波特率的 tty 设备可以在两个进程之间读取和写入。据我所知,我正在寻找一个伪终端,并且makedev显然可以制造一个。

我还发现了以下一组说明:

su to root
cd /dev
mkdir pty
mknod pty/m0 c 2 0
mknod pty/s0 c 3 0
ln -s pty/m0 ttyp0
ln -s pty/s0 ptyp0
chmod a+w pty/m0 pty/s0
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来制作伪终端,或者这几乎是在 shell 中制作一个的标准方法?

linux terminal tty devices ipc

5
推荐指数
1
解决办法
8357
查看次数

ipcs(1) POSIX 相当于 System V

我知道使用 ipcs(1) 命令可以监视 System V 消息队列、共享内存和信号量,但是如何监视 POSIX 消息队列、共享内存和信号量。对于 POSIX 消息队列,我可以安装伪文件系统,如 mq_overview(7) 中所述。预先感谢您的任何帮助。

ipc posix

5
推荐指数
1
解决办法
1718
查看次数

没有服务器的命令行发布/订阅?

有没有办法在不使用服务器进程的情况下从命令行实现发布/订阅模式?这只需要在一台机器上工作。

我想通过没有服务器进程来避免的主要事情是配置一台机器来使用这些工具。我也非常希望不必处理我的服务器进程死亡的可能性。|

这可能类似于:

# client 1
subscribe name | while read line; do echo $line; done

# client 2
subscribe name | while read line; do echo $line; done

# server
echo message | publish name
Run Code Online (Sandbox Code Playgroud)

相关链接

command-line ipc

5
推荐指数
1
解决办法
1350
查看次数

/proc/[pid]/fd/[0, 1, 2]:没有这样的文件或设备 - 即使文件存在

stdio我正在尝试从其父进程外部访问进程的流。我已经找到了该/proc/[pid]/fd目录,但是当我尝试时

$ cat /proc/[pid]/fd/1
Run Code Online (Sandbox Code Playgroud)

我收到一个No such file or device错误。我确信它存在,正如 Dolphin(文件浏览器)所显示的那样。

我还碰巧注意到文件资源管理器将其列为套接字,并尝试按照此处的建议从中读取内容会产生类似的错误。这对我来说很奇怪,因为stdio流通常是管道,而不是套接字,所以我不确定这里发生了什么。

我还想指出,这些进程是由同一用户启动的,并且尝试访问它也sudo不起作用。如果这个问题看起来很幼稚,我深表歉意,但我真诚地感谢一些指导 - 也许有更好的方法来访问 stdio 管道?

linux process ipc fifo unix-sockets

4
推荐指数
1
解决办法
2739
查看次数

Unix 域套接字和网络套接字之间的区别?

我说得对吗

  • 当两个进程通过网络套接字通信时,每个进程创建一个套接字(每个套接字属于一个进程),进程通过它们的套接字进行通信。

  • 当两个进程通过Unix域套接字通信时,只创建一个套接字(不属于任何进程),并且两个进程都连接到同一个套接字?

ipc socket unix-sockets

3
推荐指数
1
解决办法
5407
查看次数

Shell:两个命令的STDIN/STDOUT的相互管道

当我们使用 POSIX shell 运行它时,

$ cmd0 | cmd1
Run Code Online (Sandbox Code Playgroud)

cmd0 的 STDOUT 通过管道传输到 cmd1 的 STDIN。

问:除此之外,我如何将 cmd1 的 STDOUT 通过管道传输到 cmd0 的 STDIN?

必须使用重定向自/进入命名管道 (FIFO) 吗?我不太喜欢命名管道,因为它们占用了一些文件系统路径,我需要担心名称冲突。或者我必须通过 C、Python 或一些通用编程语言调用 pipe(2) 吗?

(cmd0 和 cmd1 都执行一些网络 I/O,因此它们不会永远相互阻塞。)

pipe io-redirection shell-script ipc

3
推荐指数
1
解决办法
2754
查看次数

共享文件描述符

如果文件描述符特定于每个进程(即两个进程可能使用相同的文件描述符 id 来引用不同的打开文件),那么如何通过套接字等共享传输文件描述符(例如共享 mmap)?

它是否依赖于内核被映射到每个进程下的相同数字地址范围?

file-descriptors ipc shared-memory

3
推荐指数
1
解决办法
5945
查看次数

journald 如何知道产生日志数据的进程的 PID?

当我查看 时journalctl,它会告诉我日志条目的 PID 和程序名称(或服务名称?)。

然后我想知道,日志是由其他进程创建的,systemd-journald当进程可能只将原始字符串写入systemd-journald正在侦听的unix域套接字时,如何知道这些进程的PID 。此外,sytemd-journald即使进程使用诸如sd_journal_sendv()?

有没有我应该阅读的文档?

我阅读了JdeBP 的回答并且知道systemd-journald在 Unix Domian Socket 上监听,但是即使可以知道发送日志消息的对等套接字地址,它如何知道 PID?如果发送套接字被许多非父子进程打开怎么办?

ipc systemd-journald

3
推荐指数
1
解决办法
1461
查看次数

命名管道 (mkfifo) 是 RabbitMQ 的前身吗?

RabbitMQ 是否用于进程间通信,如管道和命名管道?RabbitMQ 与命名管道相比如何?除了分布式系统。

RabbitMQ,对于那些还没有遇到过的人来说,它是一个开源的、中间件、使用 AMQP 的企业消息代理。)

pipe ipc fifo rabbitmq

2
推荐指数
1
解决办法
599
查看次数

使用 FIFO 与临时文件或管道的目的是什么?

来自 APUE

FIFO 可用于在一系列 shell 命令中复制输出流。这可以防止将数据写入中间磁盘文件(类似于使用管道避免中间磁盘文件)。

但是管道只能用于进程之间的线性连接,而 FIFO 有一个名称,因此它可以用于 非线性连接

考虑一个需要处理过滤输入流两次的过程。

mkfifo fifo1
prog3 < fifo1 &
prog1 < infile | tee fifo1 | prog2
Run Code Online (Sandbox Code Playgroud)

我们创建 FIFO,然后在后台启动 prog3,从 FIFO 中读取。然后我们启动 prog1 并使用 tee 将其输入发送到 FIFO 和 prog2。

  1. FIFO 如何“在一系列 shell 命令中复制输出流”?这不是由teeFIFO 来完成的吗?

  2. 在示例中,mkfifo fifo1在当前目录中创建一个文件,并且fifo1似乎可以用常规文件替换。那么FIFO“防止将数据写入中间磁盘文件”的意义何在?

  3. 进程之间的“线性连接”和“非线性连接”是什么意思?FIFO可以用于非线性连接,而管道只能用于进程之间的线性连接是什么意思?

谢谢。

pipe ipc fifo mkfifo

2
推荐指数
1
解决办法
4288
查看次数

FIFO 或其他东西是否可以不阻塞写入者的访问,而只是删除数据?

FIFO 在使用中存在问题,因为读取器和写入器都必须打开它\xe2\x80\x93,如果其中一个迟到,而另一个被阻塞在操作系统内。

\n\n

我必须实现一个发布机制 \xe2\x80\x93 一个程序发布其日志,如果有人“关心”监听,即打开发布通道,他就会收到消息。如果没有人“关心”,消息就会消失,没问题。支持不超过单个侦听器 \xe2\x80\x93 也没有问题。我可以用什么?

\n

logs ipc fifo

2
推荐指数
1
解决办法
343
查看次数