腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
搜索
搜索
关闭
发布
精选内容/技术社群/优惠产品,
尽在小程序
立即前往
文章
问答
(9999+)
视频
沙龙
2
回答
在
Linux
上生产多
线程
程序时,
信号
处理的最佳实践是什么?
、
、
、
我正在编写一个多
线程
程序,它将在
Linux
系统上运行。我想要确定的是,如果程序处于可靠的运行状态(即没有分段错误,没有中止等等),那么在退出时,它会最终确定一个文件写入了一些尾随信息。由于它是一个多
线程
程序,所有的
信号
都被
屏蔽
,除了主
线程
之外,主
线程
只对只填充终止
信号
的
信号
集调用σ等待。因此,所有其他
信号
都由它们的默认操作来处理。这是一个很好的实践,还是我应该为每个
信号
提供一个自定义操作?
浏览 3
提问于2015-03-10
得票数 2
回答已采纳
1
回答
从注解非进程向
线程
发送
信号
,日志堆栈未发生
、
、
、
、
我正在尝试从另一个进程(而不是从创建该
线程
的进程)向POSIX
线程
发送
信号
。我使用kill(...)发送
信号
:: 69 { 77 else 79 } 在注册了SIG
浏览 0
提问于2014-01-27
得票数 2
1
回答
pause()系统调用并接收SIGINT
信号
、
、
、
我是
Linux
和处理
信号
处理的初学者。假设我们有一个进程A,它执行pause()函数,我们知道这会使当前进程进入休眠状态,直到该进程接收到
信号
。但是当我们键入ctrl-
c
时,内核也会向进程A发送一个SIGINT,当A接收到
信号
时,它会执行SIGINT的默认处理程序,该处理程序将终止当前进程。
浏览 6
提问于2018-11-30
得票数 1
1
回答
如何在处理
信号
时阻止相同的
信号
?
、
、
我编写了一个守护进程,它通常在收到
信号
后暂停并做一些事情(我使用SIGHUP将它唤醒到另一个进程)。 if(saw_hup) { }} 据我测试,
信号
似乎有一些堆栈,因此在执行A部分时出现的
信号
使守护进程在前面的部分完成A部分之后再次从pause()执行部分A中唤醒。但是,我希望下一个SIGHUP
信号
被阻塞,而不是被它再次执行A部分。我想要的是在S
浏览 2
提问于2016-03-30
得票数 3
2
回答
如何忽略
C
中的
信号
?
、
、
、
我想忽略
线程
生命周期的前100秒钟的
信号
,我开发了这个解决方案,但是它不起作用,我遗漏了什么部分? 问题语句:编写的程序有两个
线程
--创建
线程
(
线程
A)和创建
线程
(
线程
B)。创建
线程
B后,
线程
A等待
线程
B终止,然后终止自身。
线程
B仅在后面描述的特殊情况下终止。
信号
SIGINT (ctrl
C
)在
线程
B中被阻塞(即只有
线程
A处理S
浏览 2
提问于2017-11-26
得票数 0
1
回答
异步
信号
导致套接字I/O问题
、
、
、
、
我在一个多
线程
environment.Both客户端和服务器端的应用程序上工作,客户端和服务器端有两个threads.The主
线程
使用套接字(IPv4-TCP)发送数据,客户端的相应主
线程
recv发送和接收我在另一个
线程
中为服务器上的SIGUSR1,SIGUSR2和SIGINT设置了三个
信号
处理程序。在接收到SIGINT时,会进行
线程
清理,以优雅地关闭所有套接字并终止
线程
,在接收到SIGUSR1、SIGUSR2时,我设置了两个全局标志,这两个标志在同一
线程</e
浏览 2
提问于2012-08-01
得票数 0
回答已采纳
1
回答
为什么必须在等待特定
信号
之前设置pthread_sigmask
、
在其中一个
线程
中,我必须等待特定的实时
信号
,但我不明白为什么在等待特定
信号
之前,我必须首先为
线程
设置整个sigmask。
浏览 40
提问于2019-04-13
得票数 1
回答已采纳
1
回答
理解
信号
阻塞和
信号
暂停
、
、
在阅读了文档之后,我仍然不太理解
信号
阻塞。如果你有一个
屏蔽
,阻止一个给定的
信号
,你需要先解除该
信号
,以允许程序拦截它,还是
信号
阻塞行为以不同的方式?如果你使用σ挂起,你的程序是否会被挂起,直到当一个参数到达时从你传递的掩码发出一个给定的
信号
? 当您在使用σ挂起时等待的
信号
应该解除阻塞还是没有必要?顺便说一下,我正在使用
C
和p
线程
库来编写我的程序。
浏览 2
提问于2022-03-20
得票数 0
回答已采纳
3
回答
Ctrl +
C
:它会和主进程一样杀死
线程
吗?
、
、
在运行
线程
程序并反复使用Ctrl +
C
终止主程序时,我在第二次运行时看到程序出现意外的结果。但是,如果我让程序运行并自动退出,就不会出现问题。所以,我的疑问是,Ctrl +
C
会和主进程一样杀死
线程
吗? 提前谢谢。
浏览 1
提问于2011-04-29
得票数 2
回答已采纳
1
回答
FreeBSD上的sem_wait中断
信号
、
、
我目前有一些具有
信号
处理程序的代码,并且我正在引发一个SIGINT
信号
。这似乎没有唤醒我的sem_wait(),所以我可以检查返回值,因此使用sem_wait运行函数的
线程
会无限期地挂起。根据
linux
手册页,我应该能够提高singal,测试正在执行sem_wait的
线程
中的EINTR值,但在FreeBSD中似乎缺少这一点。signal_handler() //handles SIGINTloopvar = 0;
浏览 0
提问于2013-01-12
得票数 0
1
回答
linux
内核中的tty_tiocmset
屏蔽
了所需的调制解调器
信号
、
、
、
、
我在可以配置为DTE/DCE的硬件上运行嵌入式
linux
内核。在名为tty_io.
c
的文件中的tty/串行驱动程序中,有一个函数tty_tiocmset(),它从tty_ioctl中获取一个位模式,用于设置/清除特定的调制解调器控制
信号
。有趣的是,除了TIOCM_DTR|TIOCM_RTS|TIOCM_OUT1|TIOCM_OUT2|TIOCM_LOOP之外,tty_tiocmset()函数还
屏蔽
了所有其他调制解调器
信号
(该
屏蔽
如下面的代码所示但是,如果您查
浏览 0
提问于2012-05-25
得票数 0
回答已采纳
1
回答
从
信号
处理程序访问共享内存
、
、
、
、
我在使用
信号
处理程序时遇到了这个问题。我有一个定义共享内存的父进程。它派生了两个子进程,这两个子进程有一个用于特定类型
信号
的
信号
处理程序。现在,只要子进程接收到该特定
信号
,其
信号
处理程序就会处理该
信号
。 现在,我需要跟踪
信号
处理程序处理
信号
的次数。我需要使用共享内存来递增计数器,以达到
信号
被任意子进程处理的次数。为此,我可能需要使用
信号
量。但我的问题是,每当
信号
被处理程序处理时,它必须检查共享内存是
浏览 0
提问于2012-09-16
得票数 1
3
回答
发送到父
线程
的带有kill的
信号
是否保证在下一条语句之前得到处理?
、
、
、
、
好的,如果我在
linux
上的一个子
线程
中运行(如果重要的话,可以使用pthread),并且我运行以下命令它会将给定的
信号
发送给当前
线程
的父
线程
。我的问题是:在运行kill()后面的语句之前,是否保证父进程会立即获取CPU并处理
信号
(如果是SIGKILL,则终止应用程序;如果是其他
信号
,则执行其他任何操作)?或者,有没有可能--甚至很有可能-- kill()之后的任何命令都会在父
线程
处理
信
浏览 1
提问于2010-04-24
得票数 0
回答已采纳
1
回答
仅当在NetBeans中运行
C
代码时才会出现错误
、
、
、
从Netbeans 6.8内部运行一段
C
代码会导致分段错误。但在调试模式下运行或从shell运行时,该问题不会出现。在Netbeans的外部终端和输出窗口中都尝试过。这个进程是
线程
化的,它使用了一个发送
信号
的计时器,对于不相关的
线程
,我用pthread_sigmask
屏蔽
了这个
信号
。
浏览 0
提问于2010-09-17
得票数 1
1
回答
mq_receive()在
信号
生成后不返回
、
、
、
、
我目前正在开发一个嵌入式应用程序(运行在
linux
4.14上),它使用POSIX
线程
实现两个
线程
(主
线程
和一个通信
线程
)。通信
线程
创建一个POSIX队列来处理来自主
线程
的命令请求(通过调用mq_send())。它还可以处理来自引发SIGIO
信号
的串行线的输入数据。command request
浏览 0
提问于2020-02-05
得票数 1
1
回答
退出在
c
#中包含阻塞语句的
线程
。
、
、
、
我用多个进程编写了一个程序,每个进程都有多个
线程
。我想使用ctrl停止程序,并决定使用中断处理程序。为此,在按下ctrl时,我使用signal()函数设置了一个标志。大多数
线程
都包含没有阻塞语句的循环,只是在未设置标志时运行。设置标志时,循环结束,调用pthread_exit()。一些
线程
包含一个阻塞语句,并且可能不会到达注意到标志更改和循环可能结束的地步。我在下面添加了一个示例(伪代码):{ // when (CTRL-
C
) is
浏览 4
提问于2013-08-24
得票数 1
回答已采纳
3
回答
持久化
信号
处理
、
、
、
我试图编写一个
信号
处理程序来捕获任意数量的连续SIGINT
信号
,并防止程序退出。该程序是一个简单的文件服务器。sigint_handler.sa_flags = 0;不确定如何“重新安装”--我只是在处理程序中复制了这段代码,类似于使用
信号
它利用
线程
,以便传输可以同时进行。在接收到SIGINT时,我希望服务器退出while循环,等待所有当前传输完成,然后关闭。实际上,无论我如何编码
信号
处理程序,第二个SIGINT
浏览 0
提问于2011-11-27
得票数 1
回答已采纳
1
回答
设置了
信号
处理程序的子
线程
无法捕获SIGUSR1的原因是什么?
、
、
我遇到了一些奇怪的事情,我想可能是我不理解
Linux
中
线程
的复杂性。我用signal(SIGUSR1, &callback)在我的子
线程
中注册了一个
信号
处理程序,并且没有对我的父
线程
中的
信号
进行特殊处理。我的子
线程
每隔一段时间就会引发一个SIGUSR1。但是,它会在退出的主
线程
中导致未处理的
信号
错误。如何重现这种行为?当我尝试用一个测试程序重现时,只要在子
线程
中设置了
信号
处理程序,它总是会被
浏览 0
提问于2017-04-11
得票数 1
1
回答
利用POSIX
信号
终止
C
++11多
线程
应用
、
、
、
我在
Linux
上用
C
++11编写了一个简单的多
线程
应用程序,我想通过发送SIGINT
信号
来终止服务器及其运行的
线程
。显然,我的服务器应用程序使用了来自
C
++11 (std::thread等)的
线程
支持。虽然我在
C
++11 (std::signal)中找到了一些对
信号
处理的支持,但我找不到在多
线程
环境中处理
信号
的任何支持。因此,我的问题是-在
C
++11中如何处理多
线程</em
浏览 4
提问于2013-05-02
得票数 7
1
回答
在
信号
处理程序中使用互斥锁
、
、
、
、
我有一个多
线程
应用程序,需要在中断、终止等
信号
时优雅地停止它。 这里有一个片段来说明逻辑的相关部分。run);} 正如你在signal_handler中所看到的,甚至running被设置为false的情况下,condition会被通知还有一种情况(用行内注释描述),
线程
会进入睡眠状态这允许
线程
锁定互斥锁,并在设置变量之前检查条件。从
信号
中弱化休眠
线程
的任何其他技巧。
浏览 26
提问于2020-03-23
得票数 0
回答已采纳
点击加载更多
扫码
添加站长 进交流群
领取专属
10元无门槛券
手把手带您无忧上云
相关
资讯
分享:C语言编程——LINUX 多线程
Android C++系列:Linux线程(一)概念
Android C++系列:Linux信号(三)
详解Linux多线程中的互斥锁、读写锁、自旋锁、条件变量、信号量
C语言服务器编程必备常识
热门
标签
更多标签
云服务器
ICP备案
实时音视频
对象存储
即时通信 IM
活动推荐
运营活动
广告
关闭
领券