腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
圈层
工具
MCP广场
文章/答案/技术大牛
搜索
搜索
关闭
发布
文章
问答
(3312)
视频
沙龙
1
回答
对于
MacOS
pthread
,
sigwait
()
不
处理
信号
macos
、
pthreads
、
signals
在运行以下代码时,
sigwait
()从不
处理
SIGUSR1
信号
。基本设置是: main产生两个
pthread
:一个是
处理
程序线程,另一个是工作线程。主线程和两个派生线程都会阻塞SIGUSR1。
处理
程序线程永远不会看到它。 这是在
MacOS
上。在从Xcode运行时,我插入了一个执行pro hand -p true -s false SIGUSR1的可连续断点。为什么
sigwait
()看不到提升的SIGUSR1?=
sigwait
())\
浏览 23
提问于2019-02-07
得票数 1
回答已采纳
1
回答
交叉(POSIX)平台模拟sigtimedwait()
linux
、
macos
、
pthreads
、
signals
、
bsd
用例是需要在执行自己的SIGPIPE和/或SSL_write()的线程中屏蔽它,并让它在当前的POSIX系统(如Linux、
macOS
、BSD等)上编译。版本的
macOS
,所以跨平台的解决方案看起来不太可能使用这种方法。
sigwait
()函数似乎到处都存在,但是如果特定的
信号
不是真正挂起的话,它将永远阻塞。因此,下一个最好的方法似乎是使用sigpending()查看挂起的内容,然后使用
sigwait
()来服务它,这两者似乎都是可用的。那么,
对于
上述用例,
pthread
浏览 2
提问于2020-08-02
得票数 1
回答已采纳
5
回答
sigwait
()和
信号
处理
程序
c
、
linux
、
multithreading
、
pthreads
、
signals
如果我为SIGABRT设置和
信号
处理
程序,同时我有一个线程在等待SIGABRT的到来(我有一个被
pthread
_sigmask阻塞的SIGABRT在其他线程中)。我正面临着
sigwait
()永远被阻塞的问题。
pthread
_sigmask(SIG_BLOCK, &signal_set, NULL);
pthread
_create(&a
浏览 1
提问于2014-02-04
得票数 8
2
回答
调试多线程应用程序中的
信号
处理
c
、
multithreading
、
debugging
、
signals
我有一个使用
pthread
的多线程应用程序。我的线程实际上是使用
sigwait
等待
信号
的。实际上,我想调试我的应用程序,看看哪个线程在什么时间接收哪个
信号
,然后调试它。有没有什么方法,我可以这样做。如果我直接运行我的程序,那么
信号
就会快速生成,并由我的
处理
程序线程
处理
。我想看看哪个
处理
程序从
sigwait
调用中唤醒并
处理
信号
等。
浏览 0
提问于2012-10-01
得票数 0
1
回答
在三个线程之间发送
信号
c
、
linux
、
multithreading
stdio.h>#include <sys/stat.h>#include <linux/stat.h>
pthread
_create(&t2, NULL, countChars, NULL);
pthread
_create(&t3, NULL, outp
浏览 1
提问于2014-09-09
得票数 0
回答已采纳
1
回答
pthread
_sigmask干扰GDB
c
、
gdb
、
pthreads
、
signals
、
sigint
我一直在Linux下开发一个对
信号
处理
有特殊要求的多线程程序。例如,我需要程序打印单个Ctrl-C输入的统计数据。我使用
pthread
_sigmask和
sigwait
实现了这一点,即我在创建其余线程之前阻塞主线程中的所有非关键
信号
,并在
sigwait
上启动一个阻塞的“捕获器”线程。= 0) s =
pthread
_create(&sign
浏览 3
提问于2012-07-18
得票数 2
回答已采纳
2
回答
线程
信号
不
工作。
c
、
multithreading
、
signals
在线程B中,它将在
sigwait
处阻塞。至于当收到SIGUSR1时该做什么,我还没有定义它。下面是我的密码。但是,程序立即终止,输出为User defined signal 1。void usr1_handler(); {
pthread
_attr_t attr_obj;
浏览 1
提问于2016-07-06
得票数 1
回答已采纳
1
回答
如何在
sigwait
之后执行语句
c
、
linux
、
multithreading
、
pthreads
、
signals
我正在努力学习
信号
。我已经使用
sigwait
和
pthread
_kill编写了一小段代码。即使我使用
pthread
_kill发出
信号
,
sigwait
之后的语句也不会被执行。我得到的输出是“在实时
信号
0之前”的预期输出:“在此之前”#include <unistd.h>#include;
浏览 2
提问于2019-10-27
得票数 0
2
回答
坚持使用
sigwait
c
、
macos
、
signals
我在代码中做了一些错误的事情,另一个进程向它发送了一个SIGUSR2
信号
:sigemptyset(&sigset);sigaddset(&sigset, SIGUSR2);XCode注意到SIGUSER2(31)
信号
已接收,但已接收= SIGILL(4) (或集合中的最小
信号
)。sigaddset(&sigset, SIGI
浏览 0
提问于2011-05-11
得票数 2
回答已采纳
1
回答
是否可以在进程中的所有线程上设置
pthread
_sigmask?
c++
、
c
、
multithreading
、
pthreads
、
signals
当接收到SIGTERM时,我仍然试图进行一些清理,然后实现TERM的效果,这是在进程中没有线程等待
信号
并且没有定义
信号
处理
程序时的默认行为。我的应用程序是多线程的,通过sigaction或signal使用普通的
信号
处理
程序会产生不确定的结果,因为任意选择哪个线程实际上被中断来运行
信号
处理
程序对
信号
处理
程序的操作很重要(它正在清理一些线程,如果错误的线程被中断特别是,我在起始线程中使用
pthread
_sigmask阻止
浏览 2
提问于2014-02-27
得票数 0
1
回答
Linux (Fedora 13)与OS X中的
sigwait
c++
、
pthreads
、
signals
因此,我正在尝试使用
pthread
创建一个
信号
处理
程序,它可以在OS X和Linux上运行。下面的代码可以在OS X上运行,但不能在Fedora 13上运行。 这个应用程序相当简单。它产生一个
pthread
,注册SIGHUP并等待一个
信号
。在产生
信号
处理
程序之后,我在主线程中阻塞了SIGHUP,因此
信号
应该只发送到signal_handler线程。如果我注释掉signal_handler
pthread
_create,应用程序就不会死
浏览 2
提问于2010-06-03
得票数 3
回答已采纳
1
回答
从
信号
处理
程序中唤醒线程
c++
、
linux
、
multithreading
、
signals
、
signal-handling
我了解到,ISO/C++11中的
信号
处理
程序只允许读取或写入无锁原子变量或volatile sig_atomic_t (我相信,POSIX稍微宽松一些,允许调用一组系统函数)。doWait; });} 我相信,我不允许在
信号
处理
程序中调用notify_one() (如果我错了,请告诉我)
信号
可能在doWait检查和线程休眠之间到达,因此它永远不会醒来(显然,我无法锁定signalHande
浏览 3
提问于2015-06-29
得票数 7
回答已采纳
2
回答
如何在不使用
SIGWAIT
的情况下阻塞线程中的所有
信号
?
c
、
unix
、
pthreads
、
signals
我确实在主程序中有一个关闭钩子来捕获SIGINT,但在AIX上,它似乎以某种方式向线程发送了一个作为well...although的
信号
,这在我听说的情况下是不可能的…… 从本质上说,我想知道我是否希望主应用程序
处理
我感兴趣的所有
信号
,并且让线程永远
不
处理
任何“良好实践”的signals...is?如果是这样,我怎么能不在thread...in中使用"
sigwait
“呢?事实上,我不想在线程中使用任何”
信号
代码“……它们必须根本不接收任何
信号
浏览 1
提问于2011-11-11
得票数 11
回答已采纳
2
回答
哪个线程
处理
信号
?
c
、
linux
、
multithreading
、
pthreads
、
signals
我负责SIGINT的
信号
处理
。无论何时发生SIGINT,线程2都应该
处理
该
信号
。, sig_hand); printf("thread2 active\n"); }{
pthread
_t t1; <
浏览 1
提问于2014-02-25
得票数 19
回答已采纳
1
回答
gdb在
处理
程序线程中更改
sigwait
捕获的sigint的值吗?
gdb
、
pthreads
、
signals
我像这样设置了一个
信号
处理
线程:// Prep signal-related stuff:
pthread
_t sig_
pthread
;
pthread
_create(&sig_
pthread
, NULL,&sig_thre
浏览 1
提问于2013-06-18
得票数 1
2
回答
多线程过程中的
信号
处理
c++
、
multithreading
、
signals
在multi-threaded进程中
处理
信号
有一个基本问题。问题不是捕捉
信号
,而是整个进程在控制台上以一个奇怪的“闹钟”输出结束。//wait for SIGALRM
sigwait
(&sig, &catchedSig); sigprocmask(SIG_BLOCK, &sig, NULL);
浏览 7
提问于2016-07-21
得票数 2
回答已采纳
2
回答
σ()在多线程程序中
不
工作。
c++
、
multithreading
、
signals
我试图编写一个多线程程序,其中一个线程(下面的变量线程)负责
处理
可能设置为该进程的任何异步
信号
。{ sigset_t sigset;
pthread
_sigmask(SIG_BLOCK, &sigset, NULL); while(1)
浏览 4
提问于2020-02-09
得票数 1
回答已采纳
2
回答
引发SIGINT,但却卡在C++中的线程中
c
、
linux
、
multithreading
、
signals
我还有一个SIGINT
处理
程序,它可以正确地关闭所有内容,从而实现有序关闭。然而,因为我的线程在一个while(1)循环中,所以我的
处理
程序中的
pthread
_join函数被卡住了,我不得不多次按ctrl+c来单独关闭每个线程。我如何只需单击一次即可完成此操作?
浏览 1
提问于2017-12-10
得票数 1
1
回答
未经
处理
的强制展开会导致中止
c++
、
exception
、
pthreads
、
terminate
、
abort
因此,我对
pthread
_exit和
pthread
_cancel的理解是,它们都会导致一个名为“强制展开”的异常被抛出目标线程中的相关堆栈框架。在
pthread
_cancel的情况下,这要么是在接收到相关
信号
时立即发生,要么是在进入取消点的下一个条目时发生,或者是在下一个
信号
解除阻塞时发生的,这取决于线程的取消状态和类型。在
pthread
_exit的情况下,调用线程立即进行强制解压。 很好。这个“异常”是一个正常的过程中的一个线程。还要注意,我从我的
pthread
_ex
浏览 1
提问于2011-01-22
得票数 5
2
回答
C和
pthread
_join程序中的
信号
接收线程
c
、
multithreading
如果我注释掉了
pthread
_join(接收者,NULL),那么程序就会运行,但它大部分时间只捕获一个
信号
。我认为这是因为接收线程没有多少时间运行。将
pthread
_join(接收端,空)留在程序中使其延迟19/20次,但程序返回10个发送
信号
和10个接收
信号
。这让我相信这与抢占有关,但我不明白它为什么会在一开始就停滞。理想情况下,我只想把它留在while(1)循环中,但是我不知道如何在
不
冻结所有东西的情况下将它重新连接到主线程中。 如果有人能帮我弄清楚为什么
信号</e
浏览 5
提问于2016-11-05
得票数 0
回答已采纳
点击加载更多
相关
资讯
C语言服务器编程必备常识
你真的懂Linux线程和信号的关系吗?
Android C++系列:Linux线程(一)概念
Linux系统编程 条件变量
Linux系统编程 信号量
热门
标签
更多标签
云服务器
ICP备案
对象存储
云点播
实时音视频
活动推荐
运营活动
广告
关闭
领券