微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在haskell中处理SIGWINCH?

如何解决如何在haskell中处理SIGWINCH?

嗨,我是 Haskell 的新手,一直在研究一些 Haskell 代码来处理 POSIX 系统上的信号。

特别是我想用 Haskell 处理 SIGWINCH

我在谷歌上搜索了它们并看到了一些关于 Hackage 的文档,但我不太确定我能用它做些什么。

然后我在下面找到了一些关于与 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;
}

但我对没有任何 C 代码的“Haskell 方式”更感兴趣。

我找到了一个关于处理 SIGINT 信号的示例,但找不到关于 SIGWINCH 的任何信息。

我如何在 Haskell 中处理它?

解决方法

以下应该允许您安装处理程序来处理(非标准)SIGWINCH POSIX 信号:

import System.Posix.Signals
import System.Posix.Signals.Exts

main :: IO ()
main = do
  installHandler sigWINCH (Catch handler) Nothing

其中 handlerIO () 类型的操作。

哈斯克林快乐!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。