signals 相关问题

信号是向进程发出事件发生的通知。信号有时被描述为软件中断。信号类似于硬件中断,因为它们中断了程序的正常执行流程;在大多数情况下,无法准确预测信号何时到达。它们在C标准中定义并在POSIX中扩展,但许多其他编程语言/系统也提供对它们的访问。

角度信号问题状态管理

**● TestComponent › 应该创建 类型错误:无法读取未定义的属性(读取“userIds”) 2 |从 '../reducers' 导入 { TestReducers }; 3 | > 4 |导出常量 getuserIds =

回答 0 投票 0

绘图时尺寸不匹配

我正在尝试将一些信号处理技术应用于从 PhsioNet 检索的本地心电图数据。我设法绘制了原始数据,但在应用这些技术并开始绘制之后......

回答 0 投票 0

使 Python 中的 C++ 函数超时

我实现了 python-cpp 绑定(使用 boost-python),以便从 Python 调用 foop() 运行 C++ 函数 fooc()。我想从 Python 设置一个超时,以便 foop 在 t 之后返回

回答 1 投票 0

我正在尝试向线程发送带有两个参数的信号,但没有传输数据

我需要将内容更新的字符串发送到我的线程,这会将其发送到 pico w。 在附加的代码片段中,我可以将参数发送到主窗口中的套接字。但是当森迪...

回答 1 投票 0

我想使用Angular Signals,我必须关闭zone.js吗?

Angular 16 推出了 Signals 作为开发者预览版。 当我想使用 Signals 时,是否必须关闭 zone.js。如果你是这样,Signals 会自动从 zone.js 中完成这项工作吗?

回答 0 投票 0

是否可以仅使用信号来管理应用程序的全局状态?

我正在考虑采用 Preact 进行库开发。 我正在考虑使用像 recoil、jotai 这样的全局状态管理库一起进行全局状态管理,但我想知道是否...

回答 1 投票 0

我正在尝试实现内核最小均方,但出现此错误 -> 内部矩阵维度必须一致

我编写了下面的代码,用于内核最小均方。我认为所有其他代码都是正确的,我只面临矩阵尺寸的问题。 %内核函数 西格玛=0.1; %调整此参数...

回答 0 投票 0

WSL + Visual Studio - 无法正确调试信号

我正在 Visual Studio 下调试此代码(不是 Visual Studio 代码): #包括 #包括 #包括 整数 n = 0; 无效handleSignal(int sig){ //它起作用了...

回答 1 投票 0

如何在线的交点上放置信号?

如何将信号放置在线的交叉点上?是指标 在此输入图像描述 can signals 是指示器 如何实施并解决问题 指标工作成功,我

回答 0 投票 0

如何通过 Python 中的子进程向 tar 发送 SIGUSR1 信号?

我正在使用子进程模块执行一个 tar 进程,我发现了使用信号从中获取进度信息(发送到 stderr)的能力。 $ tar -xpf archive.tar --totals=SIGUSR1 ./...

回答 0 投票 0

如何为具有已知 pid 的任意进程安装信号处理程序

我有以下问题(Linux): 我们有一个具有 GUI 并且可以处理键盘输入的第三方软件 我将把它称为父母,它看起来像过滤掉了所有不...

回答 0 投票 0

Signal和SIGCHLD,它有什么作用?

我被要求找到这个问题中所有可能的输出: #定义 N 4 整数值 = 9; 无效处理程序(信号){ 值 += 3; 返回; } 诠释主要(){ pid_t pid; 诠释我; 信号(SIGCHLD,处理程序); ...

回答 4 投票 0

无法在 C++ 中处理信号 SIGSEGV

我为 SIGSEGV 添加信号处理以分析我的应用程序中一个崩溃问题的根本原因(我的应用程序名称是 WPEFramework) 这是来自 main() 的代码 结构 sigaction sa;

回答 0 投票 0

为什么 glibc 的 `system()` 和 `posix_spawn()` 会处理信号?

glibc 中 system() 的当前 POSIX 范围内的父进程实现: 1.a 将 SIGINT 和 SIGQUIT 的进程范围信号处理程序设置为忽略 1.b 并阻止 SIGCHLD。 现在的李...

回答 0 投票 0

Sigsuspend 导致第二个孩子无法在 C 中接收管道消息

我正在开发一个 C 程序,我想用它来实现一个场景,当一个父进程和两个子进程通过为每个子进程保留的两个独立的 FIFO 相互通信时......

回答 0 投票 0

信号处理程序无限循环:为什么?

据我了解,在我们从某个信号处理程序返回之前,调用它的相同类型的信号会被屏蔽;我们不会再次触发相同的信号处理程序。 基于此,我

回答 0 投票 0

子进程不能用信号操作

我在将信号从父进程传递给子进程时遇到问题,因为它就像孩子没有正确打开一样,因为当我这样做时 if(oct_pid == 0) 我无法进入。 计算器.c #包括 我在将信号从父进程传递给子进程时遇到问题,因为它就像孩子没有正确打开一样,因为当我这样做时 if(oct_pid == 0) 我无法进入。 计算器.c #include <sys/types.h> #include <sys/stat.h> #include <stdio.h> #include <string.h> #include <sys/file.h> #include <signal.h> #include <stdlib.h> #include <fcntl.h> #include <unistd.h> #include <sys/wait.h> void octal(int fd){ int valor; while (1) { pause(); read(fd,&valor,sizeof(int)); printf("%o",valor); } } void hexa(int fd){ int valor; while (1) { pause(); read(fd,&valor,sizeof(int)); printf("%X",valor); } } void handler(int signal){} int main(){ int canal,pipe_fd[2],octal_pid,hexa_pid; unlink("canal"); if(mkfifo("./canal", 00660)!=0){ printf("Error al crear la pipe"); exit(EXIT_FAILURE); } canal = open("./canal",O_RDONLY); if(canal < 0){ printf("Error al obrir la pipe."); exit(EXIT_FAILURE); } pipe(pipe_fd); octal_pid = fork(); if(octal_pid == -1){ printf("Error al crear el proceso octal.\n"); exit(EXIT_FAILURE); } else if(octal_pid == 0){ close(pipe_fd[1]); octal(pipe_fd[0]); signal(SIGUSR1,octal); } else { hexa_pid = fork(); if(hexa_pid == -1){ printf("Error al crear el proceso hexadecimal.\n"); kill(octal_pid, SIGTERM); exit(EXIT_FAILURE); } else if(hexa_pid == 0){ close(pipe_fd[1]); hexa(pipe_fd[0]); signal(SIGUSR1,hexa); } else { close(pipe_fd[0]); while(1){ char c; int valor; read(canal,&c,sizeof(char)); read(canal,&valor,sizeof(int)); if(c == 'o'){ printf("Calculant en octal ... \n"); write(pipe_fd[1], &valor, sizeof(int)); kill(octal_pid,SIGUSR1); } else if(c == 'h'){ printf("Calculant en hexadecimal ... \n"); write(pipe_fd[1], &valor, sizeof(int)); kill(hexa_pid,SIGUSR1); } else if( c == 'x'){ printf("Sortint...\n"); kill(octal_pid, SIGTERM); kill(hexa_pid, SIGTERM); break; } } close(canal); close(pipe_fd[1]); waitpid(octal_pid, NULL, 0); waitpid(hexa_pid, NULL, 0); } } return 0; } client.c #include <sys/types.h> #include <sys/stat.h> #include <stdio.h> #include <string.h> #include <sys/file.h> #include <signal.h> #include <stdlib.h> #include <fcntl.h> #include <unistd.h> #include <sys/wait.h> int fd, valor; char operacio; int llegir_numero() { char buff [10]; int llegits; llegits=read(0, buff, 10); //llegir del teclat un màxim de 10 chars buff[llegits-1] = (char)0; //canvi del \n per un \0 return(atoi(buff)); //es converteix a enter } int main(){ fd = open("./canal",O_WRONLY); if(fd < 0){ printf("La pipe no s'ha obert correctament."); exit(EXIT_FAILURE); } do{ printf("Introdueix 'o' o 'h', x per acabar\n"); scanf(" %c",&operacio); if(operacio == 'o' || operacio == 'h'){ printf("Introdueix un valor enter positiu:\n"); valor = llegir_numero(); write(fd,&operacio,sizeof(char)); write(fd,&valor,sizeof(int)); } else if(operacio != 'x'){ printf("Lletra incorrecte."); } } while(operacio != 'x'); close(fd); return 0; } 我在这段代码中遇到了 kill(octal_pid,SIGUSR1) 的问题,理论上,当我向子进程 octal_pid 发送信号时,它没有工作,因为我无法进入这个管道,我知道为什么。 谢谢帮助 首先,阅读这个: sigaction和signal有什么区别? 你真的需要在 POSIX 系统上使用 sigaction() 而不是 signal(). 第二,给出 void octal(int fd){ int valor; while (1) { pause(); read(fd,&valor,sizeof(int)); printf("%o",valor); } } 这是错误的: signal(SIGUSR1,octal); 因为传递给信号处理程序的 int 参数是 signal 的值 - 而不是某个文件描述符。您需要找到另一种方法将正确的文件描述符值传递给信号处理程序。 此外,您需要安装信号处理程序(使用sigaction())before您调用fork(),否则您的子进程可以很好地发送信号甚至在父进程安装其信号处理程序之前完成运行. 最后,同一类型的多个信号可以合并为一个信号,因此如果您的子进程发送例如 8 个SIGUSR1 信号,父进程可能只会得到其中一个。还要注意这个问题和答案:Blocking signals in C

回答 1 投票 0

理解 python 信号。简单的例子

我有两个文件,sender.py 和 receiver.py 接收器.py 从发件人导入发件人 类接收器(): """ 接收者 """ def __init__(self) -> 无: ...

回答 0 投票 0

如何在进程终止之前运行函数?

我有一个 python 脚本。在流程终止之前我该如何做? 例如,我想在显示器上打印一些东西或写入日志文件。 操作系统:Windows 11 x64 蟒蛇版本:3.8.1 ...

回答 1 投票 0

如何在使用信号创建后更新字段

我正在使用信号,我想在创建后更新其中一个字段,但每次我都遇到错误 超出最大递归深度 我该如何解决? 信号.py @receiver(post_save, 发件人=

回答 0 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.