草庐IT

posix_fallocate

全部标签

linux - POSIX 线程是如何在 Linux 上实现的?

我想知道通过pthreads库创建的线程实际上是内核级线程还是与内核无关的用户空间线程?我听到了关于这个的相互排斥的意见,所以我想知道真相。 最佳答案 在Linux2.6之前,它们本质上是用户空间线程,是粘合在一起的独立进程,因为内核没有真正的线程支持。编辑:在2.6之前,对内核级线程(一个clone()函数)的支持有限,但它没有与posix线程一起使用,仅与一个名为linuxthreads的替代线程库一起使用。自NPTL(nativePosix线程库)出现以来,它们就是内核线程。 关于

linux - 使 Unix shell 脚本符合 POSIX 标准

我一直在研究一个shell脚本来自动执行一些任务。确保shell脚本在大多数平台上运行没有任何问题的最佳方法是什么。例如,我一直在使用echo-n命令将一些消息打印到屏幕上而没有尾随换行符,并且-n开关在某些ksh中不起作用炮弹。有人告诉我该脚本必须符合POSIX标准。如何确保脚本符合POSIX标准。有工具吗?或者是否有一个shell仅支持最低限度的POSIX要求? 最佳答案 POSIX第一步是将shebang设置为/bin/sh和useshellchecksite,它会告诉您什么有效或无效以及原因。分析您的脚本。例如,将此脚本粘贴

c - POSIX 是否保证信号不会传递给部分初始化的线程?

在大多数POSIX线程的实现中,新创建的线程在处于能够运行应用程序代码的一致状态之前需要进行一些初始化。这可能涉及解锁线程结构中的锁,在使用一个的实现中初始化“线程寄存器”,初始化线程本地数据(编译器级TLS或POSIX线程特定数据)等。我找不到明确的保证在线程可以接收任何信号之前完成所有这些初始化;我能找到的最接近的是2.4.3:Thefollowingtabledefinesasetoffunctionsthatshallbeasync-signal-safe.Therefore,applicationscaninvokethem,withoutrestriction,fromsi

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