问题标签 [posix]
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.
linux - timer_create、timer_settime等定时器相关函数需要链接哪些库
在 Linux 上编译调用 POSIX 计时器函数(例如:timer_create、timer_settime)的程序会返回如下错误:
我需要链接哪个库?
c - converting character encoding using a posix c function
Is there a standard posix C function to convert encodings, say from windows-1251 to utf-8 and back?
c - 如何阻止 sem_open() 因 ENOSYS 失败?
我有两个 Slackware Linux 系统,POSIX 信号量sem_open()
调用失败,errno 设置为 38。下面重现的示例代码(代码在 CentOS / RedHat 上运行良好)。
是否有任何内核或系统配置选项可能导致此问题?其他建议?
有问题的系统是 Slackware 10.1.0 内核 2.6.11 /lib/librt-2.3.4.so /lib/libpthread-0.10.so,但相同的代码适用于更旧的 RedHat 9 内核 2.4.20 /lib/librt -2.3.2.so /lib/tls/libpthread-0.29.so。(也适用于 CentOS 5 内核 2.6.18 /lib/librt-2.5.so /lib/i686/nosegneg/libpthread-2.5.so)。
man sem_open
sem_open()
表明系统不支持此 errno 方法。
sem_open()
用户空间是librt
我们动态链接的地方,并且存在librt
于受影响的系统上。
受影响的系统声称支持 POSIX 信号量:_POSIX_SEMAPHORES
是真的并sysconf(_SC_SEMAPHORES)
证实了这一点。
谢谢,基兰
编辑 1:我添加了有关正在使用的软件版本的更多详细信息,并删除了一些不相关的评论。
编辑 2: /dev/shm 安装在好的系统上,而不是安装在坏的系统上。安装它并没有改变受影响系统上的行为。我认为 /dev/shm 也是必要的,但 sem_open() 在此之前失败了,并且 strace 支持这一点。
c++ - 在发布模式下是否忽略了 assert(false)?
我正在使用 VC++。在发布模式下被assert(false)
忽略?
linux - 我的所有 inode 都在哪里使用?
我如何找出哪些目录负责咀嚼我的所有 inode?
最终根目录将负责最大数量的 inode,所以我不确定我想要什么样的答案..
基本上,我用完了可用的 inode,需要找到一个不需要的目录来剔除。
谢谢,很抱歉这个模糊的问题。
queue - 是否可以仅使用 POSIX 信号量来避免唤醒等待竞赛?是良性的吗?
我想使用 POSIX 信号量来管理从代表队列的文件中获取和放置的原子。我想要在文件系统中命名某些东西的灵活性,以便完全不相关的进程可以共享一个队列。我认为这个计划排除了 pthreads。命名的 posix 信号量非常适合在文件系统中放置任何进程都可以看到的东西,但我找不到标准的 CondWait 原语:
当进程调用 CondWait 时,它会自动发布到 sem 并等待 cond。当其他一些进程发布到 cond 时,等待进程只有在它也可以自动递减 sem 时才会唤醒。的替代品
受到竞争条件的影响,其中一些其他进程在该进程等待它之前发出 cond 信号。
我几乎没有做过任何并发编程,所以我想我会问这样:如果我对条件变量使用标准的 POSIX 计数信号量,这场比赛有可能是良性的吗?
以防万一有人想要更大的上下文,我正在为可以从 shell 脚本调用的原子队列构建 get 和 put 操作。
unix - System V 和 Posix 信号量之间的差异
使用 System V 和 Posix 信号量之间的权衡是什么?
linux - Subversion 创建具有过于严格权限的修订目录
今天早上,我尝试对 Subversion 进行修改,突然发现我没有这样做的权限。
查看 revs 目录,我注意到有人提交了第 21000 个修订版,并且由于某种原因缺少新目录的组写入权限。
在该目录上设置组写入权限允许我提交,所以我可以再进行 1000 次修订。但是为什么会发生这种情况,我可以改变什么以确保它不会再次发生?
posix - 在 Winsock 中混合文件句柄和套接字
我正在将一些代码从 BSD 套接字移植到 Winsock,但我不确定如何处理下面的情况。
我的原始应用程序在标准输入和网络套接字上运行一个选择:
尝试在 Winsock 中运行它会出现错误 10038 (WSAENOTSOCK),这是有道理的,因为 Linux 中的文件句柄 0 (stdin) 不是 Windows 中的套接字(更准确地说:SOCKET 类型)。
有没有一种简单的方法可以将此测试移植到 Windows 套接字?
c - 使用 POSIX 消息队列而不是 TCP 套接字 - 如何建立“连接”?
我有现在通过 TCP 通信的客户端和服务器程序。我正在尝试使用 POSIX 消息队列(当然,在客户端和服务器在同一台机器上的情况下)。我希望它能提高性能(特别是通过减少延迟)。
我已经解决了大部分问题,但不确定一件事:如何建立“连接”。服务器同时接受来自多个客户端的连接,所以我很想模拟 TCP 连接建立过程,如下所示:
- 服务器打开一个具有已知名称的队列并连续读取它(它可以
select(2)
与 TCP 一起使用)。 - 客户端打开三个队列:两个具有任意名称(包括一些唯一性,例如 PID 以避免冲突),一个具有服务器使用的众所周知的名称。
- 客户端向服务器的队列发布一条“连接”消息,包括客户端的队列名称(一个指定用于客户端到服务器的流量,另一个用于相反的流量)。
- 服务器打开客户端连接消息中指定的队列,并开始从客户端到服务器的队列中读取(选择)。
- 客户端使用众所周知的名称关闭服务器队列。双向通信使用客户端命名的两个队列(每个方向一个)进行。
您可能会看到该方案与常见的 TCP 方法有何相似之处,这绝非偶然。但是,我想知道:
- 你能想出更好的方法吗?
- 你看到我的方法有什么潜在的问题吗?
- 您是否还有其他想法,包括在同一台机器上使用消息队列而不是 TCP 是否会真正提高性能(延迟)?
请记住,我之前没有使用过 POSIX 消息队列(我之前确实使用过 IBM WebSphere MQ,但那是相当不同的)。平台是Linux。