草庐IT

sysv-ipc

全部标签

c - 为什么 gdb 找不到 ../sysdeps/unix/sysv/linux/ifaddrs.c

我安装了libc6和libc6-dbg。(gdb)breakfreeifaddrs(gdb)runBreakpoint1,__freeifaddrs(ifa=0xa822e0)at../sysdeps/unix/sysv/linux/ifaddrs.c:840840../sysdeps/unix/sysv/linux/ifaddrs.c:Nosuchfileordirectory.(gdb)list835in../sysdeps/unix/sysv/linux/ifaddrs.c(gdb)disassembleDumpofassemblercodeforfunction__freeif

c++ - SYSV 与 Linux/GNU ELF 格式

问题是在以下问题的上下文中:Whyarelibrariesnotfound,eventhoughtheyareclearlyonthe-Lpath?.似乎我的库和目标文件具有不同的ELF格式,这可能会导致链接器无法“找到”库。现在,这导致了几个问题:我的编译器似乎正常生成SYSVELF文件。(通过file检查)。但是,对于那个特定的C++源代码,它会生成一个Linux/GNUELF目标文件。我想知道为什么,所以我将该源代码缩减为一个空的main方法-突然我得到了一个SYSV对象文件。C++源文件中的哪些内容会导致编译器切换ELF格式?我不能将Linux/GNU与SYSVELF链接在一起

c - 线程从队列中获取其他线程的 IPC 消息 (Linux)

当我在Linux上有两个不同的IPC消息队列时,有时会抓取来自错误队列的消息。下面的玩具程序显示了问题,可以在不同的处理器上重复。非常感谢任何帮助!伯特/*Tocompile;gccMM.c-omm-fno-stack-protector-pthreadWewantMickeytosendamessagetoMinnieexclusively.WewantDonaldtosendamessagetoplutoexclusively.Problem:PlutointerceptsMinnie'smessages.Listinggives:$./mmMickeythreadsuccessf

linux - IPC 与 imsg? OpenBSD 和 Linux 兼容性?

我正在阅读Tmux源代码,看看它是如何工作的。它看到它使用imsg作为IPC,这是我从未听说过的。我一直在努力寻找更多信息,但事实证明imsg很难用google搜索,但我得到了很多关于iMessage的结果。Ifoundsomeimsgdocumentationhere,所以它似乎是一个OpenBSD库。我开始寻找Linux实现,但找不到任何东西。看来Tmux的作者编写了他们自己的兼容层。这有点让我吃惊,因为imsg似乎真的很有用。Linux是否有类似的CAPI,我只是不知道? 最佳答案 快速查看构建脚本会显示以下三个文件:comp

Linux 文件命令 : what does SYSV imply?

我正在研究两个遗留的交叉编译的ARMLinux构建。除了“使用此VM镜像构建源代码”之外,没有太多文档。文件命令输出之间的唯一区别是存在“(SYSV)”#fileExecutableExecutable:ELF32-bitLSBexecutable,ARM,version1(SYSV)...根据字符串中是否存在SYSV,我应该能够假设什么? 最佳答案 如果您看到(SYSV)字符串,则表示ELFheader中的e_ident[EI_OSABI]字段设置为0。来自ELFspec(PDFlink):Table5.OperatingSyst

c++ - IPC 通过与 atomic_t 共享内存;它对 x86 有好处吗?

我有以下通过共享内存进行进程间通信的代码。一个进程写入日志,另一个进程从中读取。一种方法是使用信号量,但这里我使用类型为atomic_t的原子标志(log_flag),它驻留在共享内存中。日志(log_data)也被共享。现在的问题是,这是否适用于x86架构,或者我是否需要信号量或互斥锁?如果我使log_flag成为非原子的会怎样?鉴于x86具有严格的内存模型和主动缓存一致性,并且未对指针应用优化,我认为它仍然有效吗?编辑:请注意,我有一个8核的多核处理器,所以我对这里的繁忙等待没有任何问题!//Process1callsthisfunctionvoidwrite_log(void*d

linux - 在 (SVS-V) IPC 信号量上配置 SELinux 权限

我有一堆使用IPC信号量进行交互的程序(semget)。其中一个程序是Apache模块,它在(某种)受限的SELinux上下文中运行(我不太了解)。该模块能够与任何常规文件正确交互,当然前提是这些文件的SELinux安全上下文设置得当。但是-当我的(模块)访问IPC信号量时,semget调用失败并返回EPERM。当SELinux关闭时,我不会收到此错误。所以-显然我需要做一些事情来设置某种SELinux安全上下文或信号量上的一些东西才能让它工作。如果它是一个普通文件,我可以在上面调用“chcon”。因为它是一个System-VIPC信号量,所以我不能那样做。我该怎么做才能使这项工作成功

linux - IPC共享内存和线程内存的性能差异

我经常听说,与在线程之间访问进程内存相比,在进程之间访问共享内存段不会造成性能损失。换句话说,多线程应用程序不会比一组使用共享内存的进程更快(不包括锁定或其他同步问题)。但我有疑问:1)shmat()将本地进程虚拟内存映射到共享段。必须为每个共享内存地址执行此转换,并且可能代表巨大的成本。在多线程应用程序中,不需要额外的转换:所有VM地址都转换为物理地址,就像在不访问共享内存的常规进程中一样。2)共享内存段必须由内核以某种方式维护。例如,当所有连接到shm的进程都被关闭时,shm段仍然在运行并且最终可以被新启动的进程重新访问。可能会有一些与shm段上的内核操作相关的开销。多进程共享内存

android - 在 Android 中使用 Binder for IPC 的优势

在Android堆栈中使用BinderforIPC相比(信号量、消息队列、PIPES)有什么优势? 最佳答案 老问题(并且可能没有被发帖人关注),但值得回答:A)所有基于文件系统或文件系统可表示的IPC机制(尤其是管道)都不能使用,因为缺少全局可写目录,所有进程都可以在该目录中mkfifo/创建它们的文件系统/套接字表示IPC端口(尽管/dev/socket用于系统进程,例如rile、zygote等)。B)建议的机制均不具备Android所需的“服务定位”功能。在UNIX中,有一个RPC端口映射器,而Android需要类似的功能。输

c++ - 共享内存 IPC 同步(无锁)

考虑以下场景:要求:Intelx64服务器(多个CPU插槽=>NUMA)Ubuntu12、GCC4.6两个进程通过(命名)共享内存共享大量数据经典的生产者-消费者场景内存排列在一个循环缓冲区中(有M个元素)程序序列(伪代码):流程A(生产者):intbufferPos=0;while(true){if(isBufferEmpty(bufferPos)){writeData(bufferPos);setBufferFull(bufferPos);bufferPos=(bufferPos+1)%M;}}流程B(消费者):intbufferPos=0;while(true){if(isBuf