如何处理 haskell 中的 SIGWINCH?
How to handle SIGWINCH in haskell?
嗨,我是 Haskell 的新手,一直在研究一些 Haskell 代码来处理 POSIX 系统上的信号。
特别是我想用Haskell
处理SIGWINCH
我用谷歌搜索了它们并看到了一些关于 Hackage 的文档,但我不太确定我能用它做点什么。
然后我发现了一些post关于与 C 代码混合的信息,如下所示
#include <stdio.h>
#include <unistd.h>
#include <signal.h>
static void sig_handler(int sig) {
if (SIGWINCH == sig) {
printf("you resized terminal\n");
}
}
int main() {
signal(SIGWINCH, sig_handler);
while (1) {
pause();
}
return 0;
}
但我对 'Haskell way' 中没有任何 C 代码的更多内容感到好奇。
我找到了一个关于处理 SIGINT
信号的例子,但是找不到任何关于 SIGWINCH
的例子。
如何在Haskell中处理?
以下应该允许您安装处理程序来处理(非标准)SIGWINCH
POSIX 信号:
import System.Posix.Signals
import System.Posix.Signals.Exts
main :: IO ()
main = do
installHandler sigWINCH (Catch handler) Nothing
其中 handler
是类型为 IO ()
的操作。
Haskelling 快乐!
嗨,我是 Haskell 的新手,一直在研究一些 Haskell 代码来处理 POSIX 系统上的信号。
特别是我想用Haskell
处理SIGWINCH
我用谷歌搜索了它们并看到了一些关于 Hackage 的文档,但我不太确定我能用它做点什么。
然后我发现了一些post关于与 C 代码混合的信息,如下所示
#include <stdio.h>
#include <unistd.h>
#include <signal.h>
static void sig_handler(int sig) {
if (SIGWINCH == sig) {
printf("you resized terminal\n");
}
}
int main() {
signal(SIGWINCH, sig_handler);
while (1) {
pause();
}
return 0;
}
但我对 'Haskell way' 中没有任何 C 代码的更多内容感到好奇。
我找到了一个关于处理 SIGINT
信号的例子,但是找不到任何关于 SIGWINCH
的例子。
如何在Haskell中处理?
以下应该允许您安装处理程序来处理(非标准)SIGWINCH
POSIX 信号:
import System.Posix.Signals
import System.Posix.Signals.Exts
main :: IO ()
main = do
installHandler sigWINCH (Catch handler) Nothing
其中 handler
是类型为 IO ()
的操作。
Haskelling 快乐!