草庐IT

posix_kill

全部标签

linux - 在 linux 中使用 posix 消息队列的单个发送者和多个接收者进程

有没有什么方法可以让一个写入进程在使用mq_send()将消息发送到消息队列后,多个读取进程可以使用mq_receive()读取消息。我预计1次写入mq和1次从mq读取,消息丢失。所以我只想知道我的理解是否有误。有什么方法可以让单个写入器和多个读取器进程可以使用posix消息队列进行通信。 最佳答案 是的,你的理解是正确的。您无法使用POSIX消息队列可靠地执行此操作。如果你想将相同的消息可靠地传递给不同的线程/进程,你应该为每个读者使用不同的队列。如果切换到SYSV消息队列,则可以执行此操作。Msgsnd()并且msgrcv()可

linux - 为什么我在 bash 中的 kill -9 命令上没有收到 SIGKILL 信号?

在bash脚本中,我按如下方式处理不同的信号:#!/bin/bashsighdl(){echo"signalcaught"#dosomethingexit0}trapsighdlSIGKILLSIGINTSIGTERM以上代码为以下事件正确处理信号:Ctrl+Ckillpidpkill脚本名对于kill-9pid,它不会调用sighdl。根据我的理解(如果我没记错的话)kill-9发送SIGKILL信号。有什么想法吗? 最佳答案 你不能那样做。是的,9是SIGKILL,出于安全原因,Unix系统设计不允许任何脚本/程序捕获SIGKI

Linux POSIX 合规列表

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭3年前。Improvethisquestion我正在为指定的linux内核寻找POSIX实现函数的列表交叉引用矩阵。例如,我想使用linux内核2.6.0,但我想查看此内核的POSIX实现函数的完整列表。我在哪里可以找到这些信息?

python - 万无一失的跨平台进程kill daemon

我有一些python自动化,它生成了我使用linuxscript记录的telnetsession命令;有两个script每个日志记录session的进程ID(父进程和子进程)。我需要解决一个问题,如果python自动化脚本死了,scriptsession永远不会自行关闭;由于某种原因,这比它应该做的要难得多。到目前为止,我已经实现了watchdog.py(请参阅问题的底部),它self守护,并在循环中轮询python自动化脚本的PID。当它看到python自动化PID从服务器的进程表中消失时,它会尝试终止script。session。我的问题是:scriptsession总是产生两个独

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,它会告诉您什么有效或无效以及原因。分析您的脚本。例如,将此脚本粘贴

Linux:从 kill 命令获取退出代码

如果我使用kill命令向进程发送SIGTERM信号,我希望得到退出代码,但在运行以下命令时我总是得到0(零)终止进程后:echo$?根据这篇文章中的回答,在向进程发送SIGTERM时我应该得到143:AlwaysappJavaendwith"Exit143"Ubuntu但我没有得到退出代码。为什么? 最佳答案 您获得的退出代码是针对kill命令本身的。0表示成功,即另一个进程收到了您发送的信号。kill只是不报告该进程的退出状态,因为它甚至不能确定其他进程是否由于它发送的信号而退出。 关

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