Questions tagged «signals»

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

3
调用pthread_cond_signal而不锁定互斥锁
我读到某个地方,我们应该在调用pthread_cond_signal之前锁定互斥锁,并在调用它之后解锁mutext: pthread_cond_signal()例程用于发信号(或唤醒)另一个正在等待条件变量的线程。它应该在互斥锁锁定后调用,并且必须解锁互斥锁才能完成pthread_cond_wait()例程。 我的问题是:在不锁定互斥锁的情况下调用pthread_cond_signal或pthread_cond_broadcast方法是否可以?

7
Django:用户登录时发出信号?
在我的Django应用中,我需要在用户登录时开始运行一些定期的后台作业,并在用户注销时停止运行它们,因此我正在寻找一种优雅的方式来 收到用户登录/注销的通知 查询用户登录状态 在我看来,理想的解决方案是 由每个发送的信号django.contrib.auth.views.login和... views.logout 一种django.contrib.auth.models.User.is_logged_in()类似于... User.is_active()或... User.is_authenticated() Django 1.1.1没有该功能,我不愿意修补该源代码并添加它(无论如何都不知道如何做)。 作为临时解决方案,我is_logged_in向UserProfile模型添加了一个布尔字段,默认情况下将其清除,该字段是在用户首次点击登录页面(由定义LOGIN_REDIRECT_URL = '/')时设置的,并在后续请求中被查询。我将其添加到UserProfile中,因此不必为此而派生和自定义内置User模型。 我不喜欢这种解决方案。如果用户明确单击注销按钮,则可以清除该标志,但是在大多数情况下,用户只是离开页面或关闭浏览器即可;在这些情况下,清除标志似乎对我来说不是直截了当的。除此以外(尽管这是数据模型的清晰性挑剔),is_logged_in但不属于UserProfile,而是属于User模型。 谁能想到替代方法?
82 python  django  login  signals 

4
POSIX线程和信号
我一直在尝试理解POSIX线程和POSIX信号如何交互的复杂性。我特别感兴趣: 控制信号传递到哪个线程的最佳方法是什么(假设它首先不会致命)? 告诉另一个线程(实际上可能很忙)信号到达的最佳方法是什么?(我已经知道,使用信号处理程序中的pthread条件变量是一个坏主意。) 如何安全处理将发生信号的信息传递给其他线程?这是否需要在信号处理程序中发生?(我通常不希望杀死其他线程;我需要一种更巧妙的方法。) 作为我为什么要这样做的参考,我正在研究如何将TclX包转换为支持线程,或者将其拆分并至少使一些有用的部件支持线程。信号是那些特别令人感兴趣的部分之一。
81 c  pthreads  signals 

6
为什么Unix程序不能用有意义的程序定义名称(而不是USR1等)发出信号?
许多Unix程序接受诸如USR1和的信号USR2。例如,要即时升级Nginx的可执行文件,请发送kill -USR2。 我知道这USR1是一个“用户定义”的信号,这意味着创建该程序的任何人都可以使用它来表示“关闭”或“转储日志”或“打印foo千次”或其他任何方式。但是我不明白为什么他们必须使用这个任意名称。为什么不kill -UPGRADE,还是kill -GRACEFUL_SHUTDOWN?Unix仅允许特定信号吗? 在我们讨论它的同时,Nginx还使用以下信号(请参阅文档): TERM,INT:快速关机 退出:正常关机 HUP: 配置重载 使用新配置启动新工作进程 正常关闭旧工作进程 USR1:重新打开日志文件 USR2:即时升级可执行 WINCH:正常关闭工作进程 UP?绞盘?这些名字的原因是什么?在哪里可以了解更多信息?
78 unix  signals 


5
Mac上的核心转储写在哪里?
在Mac OS X上,如果我将SIGQUIT发送到C程序,它将终止,但是没有核心转储文件。 您是否必须在Mac OS X上手动启用核心转储(如何?),或者将其写入其他位置而不是工作目录?
75 macos  unix  signals  coredump 

10
Android致命信号11
在我在Android上开发的应用中,我不断收到致命信号11错误。 我认为这与我访问内存的方式有关,但我不知道是什么原因造成的。 任何帮助都感激不尽! 这是LogCat: 05-02 23:47:17.618: D/dalvikvm(590): GC_FOR_ALLOC freed 68K, 4% free 6531K/6787K, paused 101ms 05-02 23:47:17.638: I/dalvikvm-heap(590): Grow heap (frag case) to 7.619MB for 1228816-byte allocation 05-02 23:47:17.738: D/dalvikvm(590): GC_CONCURRENT freed 1K, 4% free 7730K/8007K, paused 5ms+14ms 05-02 23:47:17.878: D/dalvikvm(590): GC_FOR_ALLOC freed <1K, 4% free 7730K/8007K, paused 37ms 05-02 …
72 java  android  crash  signals 

1
Pusher vs Pubnub vs开源Socket.io / SignalR.net / Faye / jWebSocket [关闭]
从目前的情况来看,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 目前,我正在评估Pusher和PubNub,以在主要的Web客户端和服务器之间启用双向实时通信。两者看起来都令人印象深刻,Pusher的文档似乎更好,而PubNub的可扩展性和可靠性显然是他们的强项。 但是,在我管理预算时,我担心Pusher和PubNub的成本可能成为我们的问题,因此我正在考虑使用一种开源替代方案-我主要研究Socket.io,Faye和jWebSocket。 尽管我自己运行服务,但我有一些担忧: 有人真的曾经将Socket.io或其他开源解决方案扩展到多台服务器吗?PubNub声称每秒处理100万条消息!,我有点怀疑Socket.io是否可以在没有大量服务器的情况下做到这一点,如果它可以工作的话。 我应该使用开源解决方案吗?付费服务中是否有某些功能可能会让我错过呢? 如果我的服务器仍在AWS上,延迟真的会成为一个问题吗?PubNub位于多个位置,因此我希望这可以减少延迟,尽管如果需要将一条消息从美国发送到日本,那么在日本拥有一台服务器将无济于事,因为它仍然需要以一种或另一种方式到达那里。 感谢您的建议。


2
即使我暂停第一个命令(Ctrl-z),也要依次运行一个命令
我知道在bash中我可以通过用分号将它们分开来依次运行一个命令,例如 $ command1; command2 或者,如果我只想command2在command1成功的情况下运行,请使用&&: $ command1 && command2 这可以工作,但是如果我暂停command1使用Ctrl-z,则在第一种情况下,它将command2立即运行,而在第二种情况下,它根本不会运行。如何依次运行命令,但仍然能够挂起第一个命令,但是直到我重新启动它(使用fg)并完成后才能再次运行第二个命令?我希望输入的内容尽可能简单,因为我希望以交互方式进行输入。或者也许我只需要在某个地方设置一个选项。 顺便说一句,什么是正确的术语Ctrl-z?

2
IBM示例代码,不可重入函数在我的系统中不起作用
我正在研究编程的重入性。在IBM的这个站点上(确实不错)。我建立了一个代码,复制到下面。这是在网站上滚动的第一个代码。 该代码尝试通过打印在“危险上下文”中不断变化的两个值来显示涉及在文本程序的非线性开发中共享访问变量的问题(异步性)。 #include <signal.h> #include <stdio.h> struct two_int { int a, b; } data; void signal_handler(int signum){ printf ("%d, %d\n", data.a, data.b); alarm (1); } int main (void){ static struct two_int zeros = { 0, 0 }, ones = { 1, 1 }; signal (SIGALRM, signal_handler); data = zeros; alarm …
11 c  gcc  signals  x86-64  data-race 

2
Julia中的系统信号拦截
在Linux下运行的Julia程序中,需要在调整控制台窗口大小时启动专用操作。那么在Julia中,我怎样才能截获系统信号SIGWINCH(调整窗口大小)并附加执行所需动作的功能呢? 在Ada中,声明它非常简单: protected Signalhandler is procedure Handlewindowresizing; pragma Attach_Handler (Handlewindowresizing, SIGWINCH); end Signalhandler; 基于方案思想的解决方案:我尝试使用C库进行SIGWINCH中断监视。 myLibrary.h void Winresize (void Sig_Handler()); myLibrary.c #include "myLibrary.h" #include <stdio.h> #include <stdlib.h> #include <signal.h> void Winresize(void sig_handler (void)) { signal(SIGWINCH, sig_handler); } 编译与图书馆准备 gcc -c -Wall -fPIC myLibrary.c gcc -shared -fPIC -o myLibrary.so myLibrary.o Julia中使用C库的程序: function …
9 julia  signals  ada 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.