小编Emi*_*ile的帖子

Julia 中的系统信号拦截

在 Linux 下运行的 Julia 程序中,我需要在调整控制台窗口大小时启动一个专用操作。那么在 Julia 中,我如何拦截系统信号 SIGWINCH(窗口大小调整)并将其附加到一个执行所需操作的函数上?

在 Ada 中,声明它相当简单:

 protected Signalhandler is
      procedure Handlewindowresizing;
      pragma Attach_Handler (Handlewindowresizing, SIGWINCH);
 end Signalhandler;
Run Code Online (Sandbox Code Playgroud)

基于 SCHEMER 思想的暂定解决方案:我尝试使用 C 库进行 SIGWINCH 中断监视。

我的图书馆.h

void Winresize (void Sig_Handler());
Run Code Online (Sandbox Code Playgroud)

我的图书馆

#include "myLibrary.h"
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>

void Winresize(void sig_handler (void)) { 
     signal(SIGWINCH, sig_handler);
}
Run Code Online (Sandbox Code Playgroud)

编译和库准备

gcc -c -Wall -fPIC myLibrary.c

gcc -shared -fPIC -o myLibrary.so myLibrary.o

使用 C-Library 的 Julia 程序:

function getc1()    
ret = ccall(:jl_tty_set_mode, Int32, (Ptr{Cvoid},Int32), stdin.handle, true)    
ret == 0 …
Run Code Online (Sandbox Code Playgroud)

signals ada julia

9
推荐指数
1
解决办法
289
查看次数

在 Julia 中检索外部命令输出

系统命令 'stty size' 返回两个整数,它们给出了当前终端的维度。Julia 如何执行此命令并在两个整数变量中返回输出。

julia

4
推荐指数
1
解决办法
127
查看次数

标签 统计

julia ×2

ada ×1

signals ×1