<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: Определить процесс, от которого пришел сигнал</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/9272.html</link>
    <description>Есть ли способ определить pid процесса, от которого пришел сигнал?&lt;br&gt;</description>

<item>
    <title>Определить процесс, от которого пришел сигнал (pavlinux)</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/9272.html#2</link>
    <pubDate>Tue, 08 Nov 2011 00:35:14 GMT</pubDate>
    <description>&amp;gt; Есть ли способ определить pid процесса, от которого пришел сигнал?&lt;br&gt;&lt;br&gt;&#091;code&#093;&lt;br&gt;#include &amp;lt;stdio.h&amp;gt;&lt;br&gt;#include &amp;lt;unistd.h&amp;gt;&lt;br&gt;#include &amp;lt;signal.h&amp;gt;&lt;br&gt;#include &amp;lt;string.h&amp;gt;&lt;br&gt;&lt;br&gt;static void sghdl(int sig, siginfo_t *sgf, void *vodi __attribute__((unused))) &#123;&lt;br&gt;&lt;br&gt;    printf(&quot;PID: &#037;d SIG: &#037;d&#092;n&quot;, sgf-&amp;gt;si_pid, sig);&lt;br&gt;&#125;&lt;br&gt;&lt;br&gt;int main(void) &#123;&lt;br&gt;&lt;br&gt;    struct sigaction sa;&lt;br&gt;    int i;&lt;br&gt;&lt;br&gt;    memset((void *)&amp;sa, 0, sizeof(struct sigaction));&lt;br&gt;&lt;br&gt;    sa.sa_sigaction = (void *)&amp;sghdl;&lt;br&gt;    sa.sa_flags = SA_SIGINFO;&lt;br&gt;&lt;br&gt;    for (i = 1; i &amp;lt; NSIG; i++) &#123;&lt;br&gt;        if (i == SIGKILL &amp;#124;&amp;#124; i == SIGSEGV &amp;#124;&amp;#124; i == SIGSTOP)&lt;br&gt;            continue;&lt;br&gt;        sigaction(i, &amp;sa, NULL);&lt;br&gt;    &#125;&lt;br&gt;&lt;br&gt;    sleep(24 * 60 * 60);&lt;br&gt; return 0;&lt;br&gt;&#125;&lt;br&gt;&#091;/code&#093;&lt;br&gt;&lt;br&gt;В общем вся фишка в том, чтоб указать флаг SA_SIGINFO, &lt;br&gt;и у обработчика сделать три аргумента.&lt;br&gt;</description>
</item>

<item>
    <title>Определить процесс, от которого пришел сигнал (guest)</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/9272.html#1</link>
    <pubDate>Fri, 04 Nov 2011 06:27:15 GMT</pubDate>
    <description>Угу, есть. man sigaction про si_pid в siginfo_t&lt;br&gt;&lt;br&gt;&lt;br&gt;</description>
</item>

</channel>
</rss>
