posix相关内容

Shebang标志与set内置标志之间的差异

在Shebang行上传递给脚本的标志与使用set内置标志的行为是否存在差异? 例如: #!/bin/bash -e # do stuff 与 #!/bin/bash set -e # do stuff (问题不是针对-e标志,而是针对任何此类标志)。 显然,set [flags]仅从其设置的点起有效。但在功能/行为方面是否还有其他区别? POSIX外壳中的行为也 ..
发布时间:2022-06-27 21:32:42 其他开发

创建一个目录,并返回一个带有`opens`的目录

我希望在C中创建一个文件树,并避免可能的争用条件。我的目的是使用open(3)创建根目录,open将返回一个目录文件描述符(dirfd),我将把它提供给后续的openat(3)/mkdirat(3)调用以创建树。 int dirfd = open(path, O_DIRECTORY | O_CREAT | O_RDONLY, mode); 执行此操作的通常方法是将第一个open调用替换为 ..
发布时间:2022-04-18 11:01:18 服务器开发

POSIX和Linux特定函数的C++包装器

您知道有没有包装POSIX和Linux函数和结构的好库(例如,套接字或文件描述符)转换为C++类?例如,我在考虑一个基本的FileDescriptor类和一些继承类(Unix套接字等),这些类具有write、read甚至一些syscall(sendfile、plice)等方法-所有这些都抛出异常,而不是设置errno。或某个共享内存类等。 我似乎找不到这样的东西,现在我考虑自己编写它,因为我 ..
发布时间:2022-03-24 19:45:35 服务器开发

POSIX标准对atExit()处理程序中的线程堆栈有什么规定?操作系统的做法是什么?

当我们的UNIX/C程序需要紧急退出时,我们使用exit(3)函数并安装atexit(3)处理程序进行紧急清理。这种方法工作得很好,直到我们的应用程序被线程化,在这一点上,exit()处理程序停止工作,这是可以预见的。 我们通过试验了解到一个错误,即线程可能已经死在atexit()处理程序中,并且它们的堆栈已被释放。 我在用atexit()链接线程消失的标准中找不到引号:线程在从mai ..
发布时间:2022-03-24 19:44:06 服务器开发

参数展开后,zsh不按IFS拆分

这是我的代码,用于在冒号分隔值上循环并执行某些操作 使用每个值。 f() { IFS=: for arg in $1 do echo arg: $arg done } f foo:bar:baz 这在大多数符合POSIX的shell中都可以很好地工作。 $ dash foo.sh arg: foo arg: bar arg: baz ..
发布时间:2022-03-24 19:37:46 其他开发

推荐的POSIX SH Shebang是什么?

我读到如果您想以可移植的方式使用Bash,您应该使用shebang: #!/usr/bin/env bash 但现在我在想:当我想明确声明我不依赖于Bash,而是编写了一个符合POSIX的脚本时,我是否应该使用: #!/bin/sh 还是#!/usr/bin/env sh在这里也更可取? 推荐答案 形式透视 POSIXrel=“noreferrer”>PO ..
发布时间:2022-02-27 21:54:35 其他开发

如何检测gdb是否正在运行当前进程

标准方式如下: if (ptrace(PTRACE_TRACEME, 0, NULL, 0) == -1) printf("traced! "); 在这种情况下,如果跟踪当前进程(例如,使用gdb运行它或附加到它),ptrace将返回错误。 但这有一个严重的问题:如果调用成功返回,gdb以后可能不会附加到它。这是一个问题,因为我没有尝试实现反调试的东西。我的目的是在满足条件时发 ..
发布时间:2022-02-24 17:20:26 服务器开发

为什么 os.chflags() 在 Linux 下不起作用?

我在 Debian GNU/Linux 8 (jessie) 64 位下使用 Python 2.7.9.我只是尝试通过调用 os.chflags(path, mode) 来更改文件属性.在 Python 文档中有一篇关于 os 的 文章 interface 表示此方法在 Unix 中可用,但不适用于 Linux.Python 总是抛出: Traceback(最近一次调用最后一次):文件“/hom ..
发布时间:2022-01-24 22:50:50 其他开发

如何获取 POSIX strerror_r 而不是 GNU 版本?

我如何获得 POSIX strerror_r 而不是 GNU 版本? 我在 Ubuntu 8.04 上使用 g++ 和 glibc 2.7 版进行编译(基于其中的内容). 编辑 在上面的手册页上写着: glibc 的功能测试宏要求(参见 feature_test_macros(7)): 在以下情况下提供 strerror_r() 的 XSI 兼容版本:(_POSIX_C ..
发布时间:2022-01-23 20:49:25 其他开发

为什么 UIKit 操作必须在主线程上执行?

我试图了解为什么不能使用多个线程执行 UI 操作.这也是其他框架(如 OpenGL 或 cocos2d)的要求吗? C# 和 javascript 等其他语言怎么样?我尝试在 google 中查找,但人们提到了一些我不理解的关于 POSIX 线程的内容. 解决方案 在 Cocoa Touch 中,UIApplication 即你的应用程序的实例被附加到主线程,因为这个线程是由 UIA ..
发布时间:2022-01-23 10:45:16 移动开发

为 UDP 套接字的 recv fcn 设置超时

我通过sendto发送一个UDP数据包,然后通过recv收到应答.如果recv没有收到回复,程序收到不进行.但是,udp 数据包可能会丢失,或者由于某种原因,数据包可能无法传递,从而导致程序卡在 recv 行.我想知道如果没有数据包到达,例如一分钟,如何为 recv 设置超时,然后跳过该行并继续执行代码? 我没有粘贴完整的代码,因为它是一个通用的 udp 代码,我的问题与唯一的 recv 有 ..
发布时间:2022-01-22 16:51:33 服务器开发

所有接口上的 UDP 广播

在具有有线和无线接口(例如 192.168.1.x 和 192.168.2.x 子网)的 Linux 系统上,我想发送一个通过所有可用接口(即通过有线和无线接口). 目前我 sendto() 到 INADDR_BROADCAST,但似乎只通过其中一个接口发送广播(并不总是相同,后续广播可能使用另一个接口). 有没有一种方法可以发送通过每个接口发出的 UDP 广播? 解决方案 首 ..
发布时间:2022-01-22 16:26:53 服务器开发

C中的非忙阻塞队列实现

我正在尝试在 C 中实现一个队列,它会导致进程不忙地等待,直到队列中有一个元素可以使用.我尝试了两种不同的方法来实现这一目标. 我遇到的第一个问题是入队/出队操作是否有 if 条件来检查边界(if(q->count == QUEUESIZE)),对 sem_wait 的调用将立即返回,因为没有其他进程获得锁. 如果我将条件更改为 while(q->count == QUEUESIZE) ..
发布时间:2022-01-21 12:25:46 其他开发

mq_receive: 消息太长

我正在使用队列实现 2 个进程之间的通信.问题是当我调用函数 mq_receive 时,我得到这个错误:消息太长. 我做了以下事情: struct mq_attr attr;长尺寸 = attr.mq_msgsize;....//初始化队列 "/gateway"int rc = mq_receive(网关、缓冲区、大小、&prio); 如果我打印大小值,我得到 size=1,而当我打印相 ..
发布时间:2022-01-21 11:54:34 其他开发