Есть два процесса: A и B.
1. A знает pid B, и хочет отправить ему сигнал.
2. B знает, что ему могут время ото времени присылать сигналы, но ничего не знает об A.
3. Пока A выкладывает себе на стек аргументы для системного вызова kill, шедулер ОС приостанавливает A, т.к. закончился квант времени.
4. B успевает штатным образом завершиться.
5. Сразу же после завершения B стартует процесс C, и получает такой же pid, какой был у свежезавершившегося B.
6. Шедулер пробуждает A, и A высылает сигнал не в B, а в C. Fail.
В более общем случае, A может быть просто нерасторопным, даже без вмешательства шедулера.
Вопрос: существует (маленькая) вероятность возникновения такой гонки в реальном мире? Если нет, то объясните, почему и какими стандартами это гарантиуется? Если существует, то какой правильный способ этой гонки избегать?