我想知道来自命令行的用户何时按下control-c,这样我就可以节省一些东西.
我该怎么做呢?我看了,但还没有看到任何东西.
注意:我对lua有点熟悉,但我不是专家.我主要使用lua来使用库Torch(http://torch.ch/)
SIGINT
使用出色的luaposix库,实现处理程序非常简单:
local signal = require("posix.signal")
signal.signal(signal.SIGINT, function(signum)
io.write("\n")
-- put code to save some stuff here
os.exit(128 + signum)
end)
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅posix.signal模块的API文档。
信号有两种不受欢迎的行为,这会导致代码变得复杂。
第一个行为可以通过使用 SetConsoleCtrlHandler/signal 在 C 程序中捕获并记住。这将允许您的函数被调用,并且您可以记住系统需要关闭。然后在 lua 代码中的某个时刻,您会看到它已经发生(调用来检查),并执行整理和关闭。
第二种行为是阻塞操作(读/写)将被信号取消,并且该操作将未完成。需要在每个 IO 事件时进行检查,然后根据需要重新启动或取消。
归档时间: |
|
查看次数: |
2487 次 |
最近记录: |