Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
G
go-ipfs
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
jihao
go-ipfs
Commits
7aab3c29
Unverified
提交
7aab3c29
authored
3月 28, 2019
作者:
Steven Allen
提交者:
GitHub
3月 28, 2019
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #6147 from ipfs/fix/intr-send-on-closed
interrupt: fix send on closed
上级
2125b047
e4afcb71
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
17 行增加
和
12 行删除
+17
-12
signal.go
cmd/ipfs/util/signal.go
+17
-12
没有找到文件。
cmd/ipfs/util/signal.go
浏览文件 @
7aab3c29
...
...
@@ -15,38 +15,43 @@ import (
// IntrHandler helps set up an interrupt handler that can
// be cleanly shut down through the io.Closer interface.
type
IntrHandler
struct
{
sig
chan
os
.
Signal
wg
sync
.
WaitGroup
closing
chan
struct
{}
wg
sync
.
WaitGroup
}
func
NewIntrHandler
()
*
IntrHandler
{
ih
:=
&
IntrHandler
{}
ih
.
sig
=
make
(
chan
os
.
Signal
,
1
)
return
ih
return
&
IntrHandler
{
closing
:
make
(
chan
struct
{})}
}
func
(
ih
*
IntrHandler
)
Close
()
error
{
close
(
ih
.
si
g
)
close
(
ih
.
closin
g
)
ih
.
wg
.
Wait
()
return
nil
}
// Handle starts handling the given signals, and will call the handler
// callback function each time a signal is ca
tched
. The function is passed
// callback function each time a signal is ca
ught
. The function is passed
// the number of times the handler has been triggered in total, as
// well as the handler itself, so that the handling logic can use the
// handler's wait group to ensure clean shutdown when Close() is called.
func
(
ih
*
IntrHandler
)
Handle
(
handler
func
(
count
int
,
ih
*
IntrHandler
),
sigs
...
os
.
Signal
)
{
signal
.
Notify
(
ih
.
sig
,
sigs
...
)
notify
:=
make
(
chan
os
.
Signal
,
1
)
signal
.
Notify
(
notify
,
sigs
...
)
ih
.
wg
.
Add
(
1
)
go
func
()
{
defer
ih
.
wg
.
Done
()
defer
signal
.
Stop
(
notify
)
count
:=
0
for
range
ih
.
sig
{
count
++
handler
(
count
,
ih
)
for
{
select
{
case
<-
ih
.
closing
:
return
case
<-
notify
:
count
++
handler
(
count
,
ih
)
}
}
signal
.
Stop
(
ih
.
sig
)
}()
}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论