问题标签 [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.

0 投票
5 回答
36485 浏览

linux - timer_create、timer_settime等定时器相关函数需要链接哪些库

在 Linux 上编译调用 POSIX 计时器函数(例如:timer_create、timer_settime)的程序会返回如下错误:

我需要链接哪个库?

0 投票
1 回答
456 浏览

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?

0 投票
5 回答
12677 浏览

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_opensem_open()表明系统不支持此 errno 方法。

sem_open()用户空间是librt我们动态链接的地方,并且存在librt于受影响的系统上。

受影响的系统声称支持 POSIX 信号量:_POSIX_SEMAPHORES是真的并sysconf(_SC_SEMAPHORES)证实了这一点。

谢谢,基兰

编辑 1:我添加了有关正在使用的软件版本的更多详细信息,并删除了一些不相关的评论。

编辑 2: /dev/shm 安装在好的系统上,而不是安装在坏的系统上。安装它并没有改变受影响系统上的行为。我认为 /dev/shm 也是必要的,但 sem_open() 在此之前失败了,并且 strace 支持这一点。

0 投票
6 回答
26400 浏览

c++ - 在发布模式下是否忽略了 assert(false)?

我正在使用 VC++。在发布模式下被assert(false)忽略?

0 投票
16 回答
85716 浏览

linux - 我的所有 inode 都在哪里使用?

我如何找出哪些目录负责咀嚼我的所有 inode?

最终根目录将负责最大数量的 inode,所以我不确定我想要什么样的答案..

基本上,我用完了可用的 inode,需要找到一个不需要的目录来剔除。

谢谢,很抱歉这个模糊的问题。

0 投票
4 回答
1400 浏览

queue - 是否可以仅使用 POSIX 信号量来避免唤醒等待竞赛?是良性的吗?

我想使用 POSIX 信号量来管理从代表队列的文件中获取和放置的原子。我想要在文件系统中命名某些东西的灵活性,以便完全不相关的进程可以共享一个队列。我认为这个计划排除了 pthreads。命名的 posix 信号量非常适合在文件系统中放置任何进程都可以看到的东西,但我找不到标准的 CondWait 原语:

当进程调用 CondWait 时,它会自动发布到 sem 并等待 cond。当其他一些进程发布到 cond 时,等待进程只有在它也可以自动递减 sem 时才会唤醒。的替代品

受到竞争条件的影响,其中一些其他进程在该进程等待它之前发出 cond 信号。

我几乎没有做过任何并发编程,所以我想我会问这样:如果我对条件变量使用标准的 POSIX 计数信号量,这场比赛有可能是良性的吗?

以防万一有人想要更大的上下文,我正在为可以从 shell 脚本调用的原子队列构建 get 和 put 操作。

0 投票
3 回答
26902 浏览

unix - System V 和 Posix 信号量之间的差异

使用 System V 和 Posix 信号量之间的权衡是什么?

0 投票
3 回答
3959 浏览

linux - Subversion 创建具有过于严格权限的修订目录

今天早上,我尝试对 Subversion 进行修改,突然发现我没有这样做的权限。

查看 revs 目录,我注意到有人提交了第 21000 个修订版,并且由于某种原因缺少新目录的组写入权限。

在该目录上设置组写入权限允许我提交,所以我可以再进行 1000 次修订。但是为什么会发生这种情况,我可以改变什么以确保它不会再次发生?

0 投票
2 回答
3119 浏览

posix - 在 Winsock 中混合文件句柄和套接字

我正在将一些代码从 BSD 套接字移植到 Winsock,但我不确定如何处理下面的情况。

我的原始应用程序在标准输入和网络套接字上运行一个选择:

尝试在 Winsock 中运行它会出现错误 10038 (WSAENOTSOCK),这是有道理的,因为 Linux 中的文件句柄 0 (stdin) 不是 Windows 中的套接字(更准确地说:SOCKET 类型)。

有没有一种简单的方法可以将此测试移植到 Windows 套接字?

0 投票
6 回答
14313 浏览

c - 使用 POSIX 消息队列而不是 TCP 套接字 - 如何建立“连接”?

我有现在通过 TCP 通信的客户端和服务器程序。我正在尝试使用 POSIX 消息队列(当然,在客户端和服务器在同一台机器上的情况下)。我希望它能提高性能(特别是通过减少延迟)。

我已经解决了大部分问题,但不确定一件事:如何建立“连接”。服务器同时接受来自多个客户端的连接,所以我很想模拟 TCP 连接建立过程,如下所示:

  1. 服务器打开一个具有已知名称的队列并连续读取它(它可以select(2)与 TCP 一起使用)。
  2. 客户端打开三个队列:两个具有任意名称(包括一些唯一性,例如 PID 以避免冲突),一个具有服务器使用的众所周知的名称。
  3. 客户端向服务器的队列发布一条“连接”消息,包括客户端的队列名称(一个指定用于客户端到服务器的流量,另一个用于相反的流量)。
  4. 服务器打开客户端连接消息中指定的队列,并开始从客户端到服务器的队列中读取(选择)。
  5. 客户端使用众所周知的名称关闭服务器队列。双向通信使用客户端命名的两个队列(每个方向一个)进行。

您可能会看到该方案与常见的 TCP 方法有何相似之处,这绝非偶然。但是,我想知道:

  1. 你能想出更好的方法吗?
  2. 你看到我的方法有什么潜在的问题吗?
  3. 您是否还有其他想法,包括在同一台机器上使用消息队列而不是 TCP 是否会真正提高性能(延迟)?

请记住,我之前没有使用过 POSIX 消息队列(我之前确实使用过 IBM WebSphere MQ,但那是相当不同的)。平台是Linux。