草庐IT

posix_spawnp

全部标签

c - 调整 POSIX 共享内存的大小。一个工作示例

我在两个不同应用程序之间的POSIX模型中有一个共享动态数组。我希望能够在不复制的情况下更改其大小。不幸的是,我找不到正确的解决方案来增加和减少C语言中的POSIX共享内存。在网络上,我发现许多文档的解释很差,例子也很糟糕。我设法找到了一些有趣的主题,但它们都不适合我:"LinuxSystemProgramming"-"MappingFilesintoMemory"Part:"ResizingaMapping"-哪里没有调整SHM大小的工作示例。HowdoIimplementdynamicsharedmemoryresizing?-仅描述。没有例子。mremapfunctionfail

linux - 如何替换 POSIX sh 字符串中的 "/"

要替换bash字符串str中的子字符串,我使用:str=${str/$pattern/$new}不过,我目前正在编写一个将使用ash执行的脚本。我有一个包含'/'的字符串,我想使用上面的语法来替换我的字符串中的'/'但它不起作用。我试过:str=${str///a}str=${str/\//a}str=${str/'/'/a}但是它们不起作用我该如何解决? 最佳答案 这个参数扩展是POSIXsh的bash扩展。如果您查看therelevantsectionofIEEEstandard1003.1,您会发现它不是必需的功能,因此pro

linux - 语言环境如何在 Linux/POSIX 中工作以及应用了哪些转换?

我正在处理大量(我希望)UTF-8文本文件。我可以使用Ubuntu13.10(3.11.0-14-generic)和12.04重现它。在调查错误时我遇到了奇怪的行为$exportLC_ALL=en_US.UTF-8$sortpart-r-00000|uniq-dɥɨɞɧ251ɨɡɞɭɯ291ɢɫɬɜ301ɪɳ475ʈʂ565$exportLC_ALL=C$sortpart-r-00000|uniq-d$#noduplicatesfound当运行使用std::stringstream读取文件的自定义C++程序时,重复项也会出现-当使用en_US.UTF-8语言环境。C++似乎至少对于st

c - 如何使用 POSIX 线程在 C 语言中创建特定于线程的全局变量?

我正在学习POSIX线程,我来到了有关线程特定数据的部分。这本书使用文件描述符做了一个很好的例子。但是,我想自己做同样的例子,除了这次使用全局变量。但是,我在完全掌握这个概念时遇到了一些困难。我想做的是:创建一个全局整数为全局int声明一个键主要是:将全局整数设置为一个值,例如。10在不进行任何清理的情况下为其创建key创建4个线程并发送给它们执行thread_func检查值是否仍然是10,因为线程只能看到它的一个副本在thread_func中:使用pthread_setspecific(key,globalvariable)创建本地实例-不确定我是否正确解释了这一点调用函数-doso

c - posix 管道是轻量级的吗?

在linux应用程序中,我使用管道在线程之间传递信息。使用管道背后的想法是我可以使用poll(2)一次等待多个管道。这在实践中效果很好,而且我的线程大部分时间都在休眠。他们只有在有事可做时才会醒来。在用户空间中,管道看起来就像两个文件句柄。现在我想知道这样的管道在操作系统端使用了多少资源。顺便说一句:在我的应用程序中,我偶尔只发送单个字节。将我的管道想象成简单的消息队列,允许我唤醒接收线程,告诉它们发送一些状态数据或终止。 最佳答案 不,我不会认为管道是“轻量级的”,但这并不一定意味着它们对您的应用来说也是错误的答案。通过管道发送一

c - 了解 POSIX 和 Linux/glibc sched_* 函数之间的差异

POSIXXSH2.8.4ProcessScheduling定义线程和进程的调度属性的行为。sched_*接口(interface)被指定为影响进程的调度属性,而不是线程。以下段落阐明了这一点:ThePOSIXmodeltreatsa"process"asanaggregationofsystemresources,includingoneormorethreadsthatmaybescheduledbytheoperatingsystemontheprocessor(s)itcontrols.Althoughaprocesshasitsownsetofschedulingattrib

c - 如果 posix 关闭调用失败怎么办?

在我的系统(UbuntuLinux、glibc)上,close调用的手册页指定了它可以返回的几个错误返回值。它还说Notcheckingthereturnvalueofclose()isacommonbutneverthelessseriousprogrammingerror.同时Notethatthereturnvalueshouldonlybeusedfordiagnostics.Inparticularclose()shouldnotberetriedafteranEINTRsincethismaycauseareuseddescriptorfromanotherthreadto

c - realloc 是否保持 posix_memalign 的内存对齐?

对齐的malloc是posix_memalign,没问题,但是对齐的realloc呢?realloc是否保留对齐方式或如何确保重新分配的内存具有相同的对齐方式?假设Linux和x86_64。 最佳答案 不,ISO或POSIX不保证从posix_memalign返回的内存上的realloc保持相同的对齐。realloc可能只是在同一地址扩展当前block,但它也可能将block移动到对齐不如原始地址严格的不同地址。如果您想要相同的对齐方式,最好分配另一个block并将数据复制过来。不幸的是,单一UNIX规范中也没有posix_mema

c - POSIX API 调用以列出进程中运行的所有 pthreads

我在POSIX/Linux环境中有一个多线程应用程序-我无法控制创建pthreads的代码。在某个时候,进程(pthreads的所有者)收到一个信号。该信号的处理程序应该中止、取消或停止所有pthreads并记录有多少pthreads正在运行。我的问题是我找不到如何列出进程中运行的所有pthreads的方法。 最佳答案 似乎没有任何可移植的方法来枚举进程中的线程。Linux有pthread_kill_other_threads_np,它看起来像是原始的纯用户态pthreads实现的遗留物,可能会也可能不会像今天记录的那样工作。它不会

linux - NPTL 和 POSIX 线程有什么区别?

NPTL和POSIX线程之间的基本区别是什么?这两者是如何演变的? 最佳答案 POSIX线程(pthread)不是一个实现,它是几个函数的API规范(一个标准,纸上的,英文的),其名称以pthread_开头。并且在中定义header。POSIX也是一套规范。NPTL现在在GNULibc里面在Linux上,并且是(或者至少努力成为)POSIX线程的实现。它是Linux系统上的一堆源代码和二进制代码。使用gcc-pthread编译的应用程序并链接到-pthread今天在Linux上使用NPTL代码。附录存在pthread的替代实现-s: