System V IPC 与 POSIX IPC

2023-11-20

  1. 两者有什么区别System V IPC and POSIX IPC ?
  2. 为什么我们有两个标准?
  3. 如何决定使用哪些IPC功能?

两者都有相同的基本工具——信号量、共享内存和消息队列。它们提供的界面与这些工具略有不同,但基本概念是相同的。一个显着的区别是 POSIX 为消息队列提供了一些 Sys V 没有的通知功能。 (看mq_notify().)

Sys V IPC 已经存在了很长时间,这有几个实际意义——

首先,POSIX IPC 的实施不太广泛。我为 POSIX IPC 编写了一个 Python 包装器它的文档列出了我对各种平台上的 POSIX IPC 实现的了解.

在该文档中列出的所有平台上,Sys V IPC 已完全实现(据我所知),而您可以看到 POSIX IPC 并未实现。

它们相对年龄的第二个含义是 POSIX IPC 是在 Sys V IPC 使用一段时间后设计的。因此,POSIX API 的设计者能够学习 Sys V API 的优点和缺点。因此 POSIX API 更简单 在我看来,更容易使用,我推荐它而不是 Sys V API。

我应该指出,我从未运行过任何性能测试来比较两者。我认为旧的 API (Sys V) 会有更多时间 进行性能调整,但这只是猜测,当然不能替代现实世界的测试。

至于为什么有两个标准——POSIX 创建了他们的标准,因为他们认为这是对 Sys V 标准的改进。但如果每个人都认为 POSIX IPC 更好,那么许多程序仍然使用 Sys V IPC,并且将它们全部移植到 POSIX IPC 需要数年时间。在实践中,这是不值得的,因此即使从明天开始所有新代码都使用 POSIX IPC,Sys V IPC 也会保留很多年。

在不了解您打算做什么的情况下,我们无法告诉您应该使用哪一个,但是您在这里得到的答案应该为您提供足够的信息来自行决定。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

System V IPC 与 POSIX IPC 的相关文章

  • 中断 (n)curses 获取传入信号

    我的一个程序使用 ncurses 来绘制一个小 tui 我的目标之一是使其能够移植到其他诅咒实现中 这意味着我想捕获终端仿真器在调整大小操作时发出的 SIGWINCH 并更新我的 tui 以遵循更改后的几何形状 而不依赖于 ncurses
  • 是否可以跨进程使用函数指针?

    我知道每个进程都会创建自己的内存地址空间 但是我想知道 如果进程 A 具有如下功能 int DoStuff return 1 和一个指针 typedef 如 typedef int DoStuff f 和 getter 函数 例如 DoSt
  • 将文本插入另一个应用程序的文本框中

    如何使用 C 或 C 将文本插入另一个应用程序的文本框中 我很久以前就这样做过 似乎还记得一些有关使用应用程序 HWND 的事情 但由于应用程序的每个实例都发生了变化 我觉得我不记得完整的故事了 我是否可以以某种方式获取正在运行的应用程序的
  • write 函数在 Unix 上需要 unistd.h,那么 Windows 上呢?

    我已经从 Linux 计算机更改为 Windows 但在编译代码时遇到了问题 因为这两个操作系统不共享相同的头文件 由于unistd h没有明显包含在内 Visual C不知道什么read write close socklen t and
  • 我可以获得`FILE*`的访问模式吗?

    我必须复制一个FILE Mac OS X 上的 C 语言 使用 POSIXint不幸的是 文件描述符一直是不可能的 所以我想出了以下函数 static FILE fdup FILE fp const char mode int fd fil
  • 有没有通过 fstat() 的 POSIX 方法来检查文件是否是符号链接?

    有没有 POSIX 方式通过fstat 2 检查文件是否是符号链接 有旗帜O NOFOLLOW in open 2 可以检查它 但是 它不是 POSIX 有S ISLNK in fstat 2 其中说man fstat The S ISLN
  • C库函数获取活动线程数

    我正在用 C 语言开发一个多线程 Unix 应用程序 有没有一种简单的方法来获取同时活动线程的数量 如果库已经可以为我完成的话 我不想编写代码来跟踪活动线程的数量 我正在使用 POSIX pthreads 并且我正在尝试为 Unix 和类
  • Android IPC远程服务调用显示错误

    我想做一个关于IPC通信 服务之间的通信 的演示应用程序 我在用AIDL为了那个原因 我发现大部分教程RemoteService和客户端在同一个包中 我实际上是分开做的 同时传递我正在使用的对象Parcelable方法和面临的错误 它说就像
  • 使用 WM_COPYDATA 在进程之间发送数据

    我希望在进程之间发送文本 我发现了很多这样的例子 但没有一个我可以工作 这是我到目前为止所拥有的 对于发送部分 COPYDATASTRUCT CDS CDS dwData 1 CDS cbData 8 CDS lpData NULL Sen
  • signal(SIGCHLD, SIG_DFL); 是什么意思?意思是?

    我不处理SIGCHLD在我的代码中 我的进程仍然在终止后立即被删除 我希望它成为僵尸进程 如果我设置SIGCHLD to SIG DFL那么 它会起作用吗 我该如何设置SIGCHLD to SIG DFL 我希望进程成为僵尸 这样我就可以在
  • Linux 消息队列 - 多个接收者

    我最近一直在研究和研究 Linux 消息队列 并遇到了一些我不太明白为什么会发生的事情 如果我们运行两个程序 它们都在无限 for 循环中使用 msgrcv 来检查消息 然后发送两条消息 那么第一个运行的程序将收到第一条消息 第二个程序将收
  • 是否可以在由同一父进程创建的两个子进程之间建立管道(LINUX,POSIX)

    我有多个孩子由同一个父母 分叉 我尝试构建pipe所有这些子进程之间的连接就像一个链表结构 孩子 1 向孩子 2 发送数据 孩子 2 向孩子 3 孩子 N 向孩子 1 发送数据 有没有正确的方法可以做到这一点 此外 如果我在进程之间创建和通
  • 如果 POSIX 系统上不存在目录,是否有办法自动创建该目录?

    POSIX 系统上是否有任何方法可以仅在目录尚不存在时才自动创建该目录 如同 int fd open path to file O CREAT O EXCL O RDWR 0644 这不起作用 int dfd open path to di
  • 在 C# 中进行进程间通信 (IPC) 最简单的方法是什么? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我有两个 C 应用程序 我希望其中一个向另一个发送两个整数 这不必很快 因为它每隔几秒调用一次 做到这一点最简单的方法是什么 它不一定是最优雅的
  • getline() 与 fgets():控制内存分配

    要从文件中读取行 有getline and fgets POSIX 函数 忽略可怕的gets 这是常识getline 优先于fgets 因为它根据需要分配行缓冲区 我的问题是 这不危险吗 如果有人意外或恶意地创建了一个 100GB 的文件
  • 如何从标准输入读取一行,阻塞直到找到换行符?

    我试图从命令行的标准输入一次读取任意长度的一行 我不确定是否能够包含 GNU readline 并且更喜欢使用库函数 我读过的文档表明getline应该可以工作 但在我的实验中它不会阻塞 我的示例程序 include
  • 抑制 makefile 中命令调用的回显?

    我为一个作业编写了一个程序 该程序应该将其输出打印到标准输出 分配规范需要创建一个 Makefile 当调用它时make run gt outputFile应该运行该程序并将输出写入一个文件 该文件的 SHA1 指纹与规范中给出的指纹相同
  • 如何抑制Windows防火墙的Windows安全警报?

    当我从这里找到的 ZeroMQ 指南中用 C 创建 Hello World 示例时 http zguide zeromq org page all Ask and Ye Shall Receive http zguide zeromq or
  • 进程退出后 POSIX 名称信号量不会释放

    我正在尝试使用 POSIX 命名信号量进行跨进程同步 我注意到进程死亡或退出后 信号量仍然被系统打开 在进程 打开它 死亡或退出后是否有办法使其关闭 释放 早期的讨论在这里 当将信号量递减至零的进程崩溃时 如何恢复信号量 https sta
  • Linux中使用管道进行进程间通信

    我已经编写了在 linux 中写入数字以进行管道传输的代码 如下所示 但显示错误 任何人都可以帮助我解决这个问题 基本上该程序的问题陈述如下 一个程序将打开一个管道 向管道写入一个数字 其他程序将打开同一管道 读取数字并打印它们 关闭两个管

随机推荐

  • 按位异或两个数字会得到数字的和或差

    当我对任意两个数字进行异或时 我得到的是它们的差值或总和的绝对值 我在谷歌上搜索了很多 试图找到任何相关的公式 但对此没有明显的公式或陈述 Example 10 XOR 2 1010 XOR 10 1000 8 1 XOR 2 01 XOR
  • 使用for循环在画布上绘制线条

    我正在尝试用画布绘制线条 并使用 for 循环更改坐标 这是我的画布元素
  • PostgreSQL 中数组是否全部为 NULL

    如果 PostgreSQL 数组的所有元素都为 NULL 是否有一个表达式返回 TRUE 如果它是 NULL 以外的值 我当然可以使用类似以下内容的值 SELECT 4 ALL ARRAY 4 5 integer 但是我想用一个进行 ALL
  • __printflike__ 修饰符

    printflike 修饰符 到底是什么 这个词是什么意思 据猜测 它告诉编译器您正在使用的函数采用以下形式的参数 anything format 哪里的format 部分看起来像参数printf The printflike 属性允许编译
  • 像 Google 使用的滚动条

    随着 Google 推出的最新更新 所有网站都获得了自定义 JS 滚动条 至少在 Chrome 中 我最喜欢它的一点是它简单且运行完美 到目前为止 我见过的很多 JS 滚动条都不能很好地工作 也就是说 如果你滚动得非常快或者滚动并移动鼠标
  • Jquery 延迟加载与 ajax

    我在我的电子商务网站上使用lazyload 惰性加载 效果很好 我使用这段代码来做到这一点 function img lazy lazyload effect fadeIn 还有一些过滤器 如颜色 价格等 运行 ajax 并显示新结果 当新
  • SwiftUI/Combine:订阅@Binding的值变化

    我有一个带有视图模型的视图 该视图中的操作可以更改视图模型 为了能够将逻辑分解为可重用的部分 我将视图的一部分作为其自己的视图 并对其所需的值使用 Binding 现在 我希望能够根据值更改执行一些逻辑 而不必只是视图更改 我怎样才能做到这
  • 如何使用多个命令启动 cmd.exe /k?

    为什么下面的代码不改变颜色和标题cmd2 怎么做以及做什么 该命令改变颜色cmd1 并将标题设置为cmd2 start cmd exe k TITLE TEST color 02 mode con cols 160 lines 78 sta
  • Android 序列化问题

    我创建了一个类 它有几个成员变量 所有这些变量都是可序列化的 除了一个位图 我尝试扩展位图并实现可序列化 但不认为位图是最终类 我想保存该类 它基本上构成了游戏的当前状态 以便玩家可以拾取并加载游戏 在我看来 我有两个选择 1 寻找另一种保
  • 如何为 java HttpURLConnection 流量启用线路日志记录?

    我用过雅加达公共 HttpClient在另一个项目中 我也想要同样的电线记录输出但使用 标准 HttpUrlConnection 我用过Fiddler作为代理 但我想直接从 java 记录流量 捕获连接输入和输出流的内容是不够的 因为 HT
  • 如何根据 Wavefront (.obj) 文件中给出的纹理索引对纹理位置进行排序?

    我目前正在尝试为 OpenGL 项目制作一个 Wavefront obj 文件加载器 我当前使用的方法是逐行分离向量 std vectors 中的顶点位置 纹理位置和法线位置 并且我将它们的索引 顶点 纹理和法线索引 存储在三个单独的文件中
  • Kivy ObjectProperty 更新标签文本

    我正在创建一个 kivy 用户界面来显示由我编写为标准 python 对象的数据模型生成的值 本质上 我希望用户能够按下一个按钮 这将更改底层数据模型 并且此更改的结果将自动更新和显示 据我了解 这可以使用 kivy 属性 在本例中为 Ob
  • 允许Html不工作

    我正在构建一个内容管理系统 以允许我以外的人更新网站上的内容 我有一个前端 HTML 表单 它通过 AJAX 将数据发送到控制器 CONTROLLER ValidateInput false public void CarAJAX CarA
  • 获取文本框值的VBA/宏代码

    Sub CopyRandomRows Windows sample rnd xlsm Activate Rows 1 1 Select Selection Copy Application CutCopyMode False Selecti
  • AWS/EKS:从 ALB 频繁收到 504 网关超时错误

    我正在使用 EKS 部署服务 入口在 alb ingress controller 之上运行 总而言之 我有大约 10 个单个 Pod 的副本 具有单一服务类型NodePort它将流量转发给他们 副本在 10 个节点上运行 使用 eksct
  • 检测用于 HttpClient POST 或 GET 调用的 TLS 版本

    我正在尝试检索 TLS 版本信息 下面的代码使用 HttpClient 成功进行了 HTTP GET 调用 我缺少什么 我在哪里可以从 HttpClient 获取 TLS 版本信息 我正在做与建议相同的事情协商了哪个 TLS 版本 但这是特
  • 获取已打印的python文本内容

    假设我打印以下代码 print THE RUSSIAN PEASANT ALGORITHM times two values x and y together x int raw input raw input x y int raw in
  • 如何使用 jQuery 加载本地文件? (带有文件://)

    有没有办法使用 jQuery 从数据文件 例如 JSON js 文件 加载数据 eg get file C objectData js function alert Load was performed 目前 JQuery 似乎没有执行简单
  • 将 Graph API 中 Facebook 访问令牌的有效期延长至 2 个月以上

    我正在使用 python 开发 Facebook 页面墙贴自动化 我通过使用自动在我拥有的 Facebook 页面上发帖Facebook 图表 API 帖子所以我通过发送 HTTP POST 请求来做到这一点https graph face
  • System V IPC 与 POSIX IPC

    两者有什么区别System V IPC and POSIX IPC 为什么我们有两个标准 如何决定使用哪些IPC功能 两者都有相同的基本工具 信号量 共享内存和消息队列 它们提供的界面与这些工具略有不同 但基本概念是相同的 一个显着的区别是