私は初心者C dev。私はCがどのように殺し、シグナルと睡眠を管理するのかを理解しようとしています。参照:何らかの理由で子プロセスに信号を送信できなくなりました。睡眠機能の変更結果が奇妙な方法で
void son1_handler(int sig)
{
printf("[SON1]:");
fflush(stdout);
}
void son2_handler(int sig)
{
printf("[SON2]:");
fflush(stdout);
}
int main(int argc, char **argv)
{
pid_t son1, son2;
son1 = fork();
if (son1 == 0)
{
while (1)
{
signal(SIGUSR1, son1_handler);
};
}
son2 = fork();
if (son2 == 0)
{
while (1)
{
signal(SIGUSR2, son2_handler);
};
}
while (1)
{
sleep(1);
kill(son1, SIGUSR1);
kill(son2, SIGUSR2);
}
}
私の目的は、印刷することです:[SON1]:[SON2]:[SON1]:[SON2] .... 上記のコードでは、時には[SON2]、ということだ:[SON1 ]:
kill(son1, SIGUSR1);
sleep(1);
kill(son2, SIGUSR2);
が、驚くほどの結果は以下のとおりであった::[SON2] ...
私はキルの間に睡眠を使用して変更する考え[SON2]:[SON2]:[SON2]:[SON2]:[ SON2] ....
私は誤解しなければならないと思う睡眠、殺し、または信号に関する何かをg。あなたはなにか考えはありますか?本当にありがとうございます。
ありがとうございます。今私にははるかに明確です。素晴らしい応答。 – juancancela