问题标签 [signals]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
70062 浏览

ubuntu - Apache 2 中的“捕获 SIGWINCH”错误是什么?

我的服务器(ubuntu 8.04)运行drupal 6的LAMP,当流量很大时,它会停止提供页面。重新启动 apache2 将不起作用,所以我必须重新启动服务。

我在 apache2 error.log 中发现了这条消息

[通知] 抓到 SIGWINCH,优雅关闭

我还注意到 apache2 的进程 id 在 apache 停止响应时大约为 12000。

更新

正如您所指出的,捕获的 SIGWINCH 是 apache 服务重新启动的通知。我与最大客户一起玩并保持活力。我将 MaxClients 设置得太低,因此出现“服务器已达到 MaxClients 设置,请考虑提高 MaxClients 设置”错误,但已解决此问题。

关于 PID,我的安装已经安装了prefork 模块,所以在达到MaxRequestPerChild之后,它会回收子进程。这就是 PID 周期性上升的原因。仍然没有弄清楚为什么一段时间后apache停止响应。

与此同时,将尝试提高 MaxRequestPerChild,这样 PID 就不会那么快地达到 PID max。当前限制为 32768(这是新的 debian 和 ubuntu 安装的标准)。

以下是日志中的更多内容:

[Fri Apr 24 01:48:56 2009] [notice] 抓到 SIGWINCH,优雅关闭

[Fri Apr 24 01:50:07 2009] [notice] Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.3 配置了 Suhosin-Patch -- 恢复正常操作

[2009 年 4 月 24 日星期五 17:13:35] [错误] [客户端 195.70.62.131] 客户端发送了没有主机名的 HTTP/1.1 请求(参见 RFC2616 第 14.23 节):/w00tw00t.at.ISC.SANS.DFind:)

[2009 年 4 月 24 日星期五 17:36:00] [错误] [客户端 212.188.33.4] 客户端发送的 HTTP/1.1 请求没有主机名(参见 RFC2616 第 14.23 节):/w00tw00t.at.ISC.SANS.DFind:)

[2009 年 4 月 25 日星期六 20:05:07] [错误] [客户端 84.243.222.12] 请求 GET HTTP/1.1 HTTP/1.1 中的 URI 无效

[2009 年 4 月 25 日星期六 20:05:12] [错误] [客户端 84.243.222.12] 找不到脚本或无法统计:/usr/lib/cgi-bin/twiki

[2009 年 4 月 25 日星期六 20:05:12] [错误] [客户端 84.243.222.12] 找不到脚本或无法统计:/usr/lib/cgi-bin/wiki

[2009 年 4 月 25 日星期六 20:05:12] [错误] [客户端 84.243.222.12] 找不到脚本或无法统计:/usr/lib/cgi-bin/wikis

[2009 年 4 月 25 日星期六 21:46:46] [错误] [客户端 211.68.23.167] 请求 GET HTTP/1.1 HTTP/1.1 中的 URI 无效

[Sun Apr 26 06:13:47 2009] [error] [client 86.39.154.89] client sent HTTP/1.1 request without hostname (see RFC2616 section 14.23): /w00tw00t.at.ISC.SANS.DFind:)

[Sun Apr 26 06:53:07 2009] [notice] 请求优雅重启,正在重启

0 投票
17 回答
118178 浏览

windows - 我可以向 Windows 上的应用程序发送 ctrl-C (SIGINT) 吗?

我(过去)编写过跨平台(Windows/Unix)应用程序,当从命令行启动时,以相同的方式处理用户键入CtrlC组合(即干净地终止应用程序)。

在 Windows 上是否可以从另一个(不相关的)进程向进程发送Ctrl- C/SIGINT/equivalent 请求它干净地终止(给它一个整理资源等的机会)?

0 投票
3 回答
1601 浏览

c - How to free dynamic allocated variable by SIGTERM?

I work on code something like this

When process is forked, all variables are cloned too. In regular case all copies of var are freed.

If there is error by fork(), I send signal SIGTERM to all created processes. And I need to write signal handler for SIGTERM which free var and terminate application. However, free() is not signal safe function -- so I shouldn`t call it. But how to free() that variable?

A lot of thanks for your answers...

EDIT: valgrind also shows still reacheable variable:

0 投票
2 回答
1979 浏览

c - Signal Stack

I did read that signals need to have a separate stack, why and how do you think it is implemented ?

Are they dynamically allocated or statically allocated ? How is memory allocation done ? Is it the same for all signals ?

0 投票
3 回答
4587 浏览

c++ - Qt:在 QWebView::linkClicked(QUrl) 上响应时出现问题 - 插槽信号问题

我对 Qt 很陌生。

我想回复linkClickedin QWebView

我试过这样连接:

但我收到错误:C:/Documents and Settings/irfan/My Documents/browser1/mainwindow.cpp:9: error: expected primary-expression before ',' token

当我使用 UI 编辑信号槽执行此操作时:

我在插槽的头文件声明中:

在源 cpp 文件中:

当我运行它时,它会编译并运行,但会收到警告:

进行此事件处理的正确方法是什么?

0 投票
4 回答
28926 浏览

c - 如何在我自己的 C 中正确等待前台/后台进程?

一个问题中,我发布了我自己的大部分 shell 代码。我的下一步是实现前台和后台进程执行并适当地等待它们终止,这样它们就不会像“僵尸”一样停留。

在添加在后台运行它们的可能性之前,所有进程都在前台运行。为此,我在使用 execvp() 执行任何进程后简单地调用了 wait(NULL)。现在,我检查 '&' 字符作为最后一个参数,如果它在那里,通过不调用 wait(NULL) 在后台运行进程,并且进程可以在后台愉快地运行,我将返回到我的 shell。

这一切正常(我认为),现在的问题是我还需要以某种方式调用 wait() (或 waitpid() ?),以便后台进程不会保持“僵尸”状态。那是我的问题,我不知道该怎么做...

我相信我必须处理 SIGCHLD 并在那里做一些事情,但我还没有完全理解什么时候发送 SIGCHLD 信号,因为我试图也将 wait(NULL) 添加到 childSignalHandler() 但它没有工作,因为我在后台执行了一个进程,调用了 childSignalHandler() 函数,因此调用了 wait(NULL),这意味着在“后台”进程完成之前我无法对我的 shell 执行任何操作。由于信号处理程序中的等待,它不再在后台运行。

我在这一切中缺少什么?

最后一件事,这个练习的一部分,我还需要打印进程状态的变化,比如进程终止。因此,对此的任何见解也非常感谢。

这是我目前的完整代码:

0 投票
5 回答
64962 浏览

c - 如何正确使我的 makefile 编译和运行?

这个问题可能不是描述我的问题的最佳问题,但我想不出更好的问题。我的makefile是这样的:

当我想编译和运行时,我只需要“make run”。问题是我的程序处理由 Ctrl+Z 产生的信号,如果我用“make run”启动程序,信号将被发送到“make run”而不是我的程序本身。

基本上,调用“make run”与直接调用“make && ./prog”不同,因为在第一种情况下,“make run”不会终止,除非“prog”首先终止。

有没有解决的办法?

0 投票
4 回答
16539 浏览

c - 用于 WIFSIGNALED、WIFSTOPPED、WIFCONTINUED 的 C 语言测试用例

我正在使用 waitpid() 和 signal() 并且我正在寻找可靠的测试用例来返回 WIFSIGNALED(status) = WIFSTOPPED(status) = WIFCONTINUED (status) = true 但找不到任何...

请告诉我如何确保那些返回 true 以便我可以调试我的代码?

此外,关于我应该使用 signal() 捕获哪些信号来测试这些宏的一些提示会很有帮助......

0 投票
1 回答
356 浏览

linux - 重新定义信号处理缺陷

这是关于设计决策并了解采用其他服务的利弊。所以我们有两个服务和两个不相关的服务器,一个监听端口 10000,另一个是 xinetd 服务器通过 3 个不同的端口响应 3 个不同的请求(它的客户端使用 nc 服务器端口 1|端口 2|端口 3 来检索数据)。

有一天,因为安全问题,xinetd 服务器不得不停止,因为第一台服务器保留了相同的数据,我们决定采用 xinetd 服务器,向第一台服务器发送 USR1 信号,让它暴露相同的公共数据。因此,需要添加逻辑来重新定义第一台服务器中的信号处理。我们计划使用 USR1 (10, 16, 30) 例如,在 xinetd 服务器中, kill -10 first_server 会让第一台服务器吐出与旧服务器过去发出的相同的数据,并且仍然转储到第一个端口. 争论是这是一个糟糕的设计,因为它滥用了 unix 信号使用,当然还重新定义了 POXIS 和 Linux 预定义的 10、16 和 30 符号行为。这在技术上真的很糟糕吗?会对系统造成什么危害?

0 投票
5 回答
16104 浏览

django - 在 Django 中事务提交后运行代码

有什么方法可以在 Django 中的事务提交后运行一些代码?

我需要将一些消息发送到rabbitmq 服务器进行离线处理,但消息在Django 事务提交之前到达消费者。

我的消息是在模型的 post_save 信号中发送的。我正在寻找的是一种类似的机制,使用信号或其他东西,它会在提交后执行代码(如果事务失败,什么也不做)。

我还没有在 Django 中找到任何通用的方法。你有什么想法?