问题标签 [ipcs]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
89715 浏览

shared-memory - 在 Linux 中使用 ipcrm 删除共享内存

我正在使用共享内存应用程序,并使用以下命令删除段:

但我不知道我是否做对了,因为当我运行时,ipcs我看到相同的段,但密钥为 0x0000000。那么内存段真的被删除了吗?当我多次运行我的应用程序时,我会看到带有密钥 0x000000 的不同内存段,如下所示:

实际发生了什么?内存段真的被删除了吗?

编辑:问题是 - 如下面接受的答案所述 - 有两个进程使用共享内存,直到所有进程都关闭,内存段不会消失。

0 投票
2 回答
2890 浏览

client-server - 为什么某些 posix 共享内存段和 posix 信号量对 ipcs 不可见

我使用 posix 共享内存和 pshared=1 的 posix 未命名信号量构建了一个客户端服务器应用程序。信号量放置在共享内存中。程序运行良好,但是当我键入 ipcs -m 或 ipcs -s 时,我没有看到我创建的任何共享内存段或信号量。为什么会这样?


0 投票
1 回答
101 浏览

.net - 需要使用 .NET Remoting 启动单独的后台进程以进行进程间通信

我有一个抽象工厂,它将根据需要启动单独的进程(.NET EXE)。抽象工厂需要随时启动进程,让新创建的进程能够与抽象工厂所在的进程进行通信。这种进程间通信将在创建它们的工厂中完成。这些将是后台进程(不涉及 GUI)。这个问题的可能解决方案是什么?

.NET 远程处理或 PIPES 都使进程能够在启动后进行通信,但首先它们需要按需启动并且它们将执行单独的独立进程(它们将显示在任务管理器和常设进程中)和然后,将进行进程间通信。

0 投票
1 回答
140 浏览

c++ - 共享内存 Segv

我曾尝试使用 Boost 并在分配 3000 次大小为 24 的对象后使用 segv,现在我开始使用 sys/ipc.h 和 sys/shm.h ,我分配了 25 个 mio 字节(如果我理解正确的话)

它似乎也可以在我的 linux 机器上正常工作 ipcs -m 将显示分配的段

sysctl -p 将打印

由于某种原因,它一直工作到程序达到“43406 x 24 字节”,这就是它将 segv 的地方。我很高兴能得到一些提示我的问题所在。另请注意,如果这是为对象分配和使用共享内存的错误方式。

0 投票
4 回答
4634 浏览

c++ - 使用 C++ 程序删除 unix 共享内存段

我正在尝试编写一个 C++ 程序来删除共享内存段。我知道可以使用 cmd 提示符来完成

ipcs -m | awk '{ print $2 }' | xargs ipcrm -m

但我正在尝试使用 C++ 来实现它,以便创建一个共享内存垃圾收集器。

这个想法是删除未附加到任何进程( nattach ==0)或状态 == NULL 的共享内存段

0 投票
1 回答
916 浏览

c - C - 获取 IPC 共享内存信息

我创建了一个程序,通过作为参数传递的 shmid(共享内存 id)显示共享内存段信息。

将数据与命令 ipcs 返回的数据进行比较,很明显我的程序显示了一些关于共享内存段的错误信息。

你能帮我理解为什么吗?

谢谢你。

0 投票
3 回答
2441 浏览

c - ipcs 不显示我的共享内存和信号量

我使用适当的标志打开共享内存和信号量:

调用不会失败(我检查它们),并且确实有一个进程由其他进程创建它们forkexec而其他进程确实共享内存和信号量,并且有适当的同步。

但是,当我使用该ipcs命令时,我看不到共享内存和信号量。这是为什么?如果它们没有出现ipcs,我在哪里可以检查它们?


在我的ipcs输出中,信号量数组列表中没有任何条目,共享内存中的条目与 skype、firefox 和 plugin-container(firefox)相关。我检查了他们

0 投票
1 回答
1393 浏览

c - 使用 ftok() 复制密钥

我在系统中有一个现有代码,它使用 ftok() 根据文件名和传递给它的零生成密钥。该代码在 32 位上运行良好,但在移至 64 位时开始随机抱怨。在研究更多时,我发现这主要是因为较低的有效位为零,而 shmopen() 可能是更好的选择。让我知道 shmopen() 是否可以避免按键冲突?有没有更好的方法来避免键冲突?

0 投票
2 回答
1601 浏览

linux - 使用 ipcrm 删除共享内存

我正在分配一些具有特定权限“644”的共享内存和消息队列。

手动删除它们是一项艰巨的工作,所以我想知道如何使用特定的 perm 644 删除所有行。

例如

------ 共享内存段 -------- key shmid owner perms bytes nattch status
0x00000000 0 benny 600 33554432 2 dest
0x00000000 229377 benny 644 52 0

------ 信号量数组 -------- key semid owner perms nsems

------ 消息队列 -------- key msqid owner perms used-bytes messages
0x2731af4c 262144 benny 644 840 30
0x0756d9c1 294913 benny 644 16380 585
0x2d1b2cc7 327682 benny 644 0 0
0x343dccc1 306041 benny 644

谢谢。

0 投票
3 回答
573 浏览

message-queue - IPC 队列中的消息是如何排序的

我需要知道 IPC 队列中的消息是否已排序。在实践中,我需要知道当调用 msgrvc 函数时,我得到的第一条消息是进入队列还是选择的消息是随机的。

现在,我提出这个问题是因为当在代码 msgrcv 的一部分中收到一条不适合该代码的消息时,我通常将消息重新排队,并在队列中读取以下消息。我想知道的是,例如,他关注消息

味精A、味精B、味精C

,存储在队列

msgB , msgC, msgA

因此,以下对 msgrcv 的调用将给我 msgB 或者如果该顺序是随机的,那么我可以再次读取 msgA

谢谢,恩佐