Некоторые ресурсы очищаются автоматически. Память, выделенная для стека или кучи, дескрипторы сокетов и файлов, операции с семафорами (если вы используете SEM_UNDO).
Для сценария, на который вы смутно ссылаетесь в своем вопросе (используя IPC для доступа к услугам из другого процесса B), вам необходимо:
- обнаружить ситуацию в процессе B
- убирать вручную.
Первым принципальным методом для решения # 1 будет процесс B, который может опрашивать наличие PID процесса A. Это явно не идеально. Лучшим решением было бы использовать метод IPC, который обнаруживает другую сторону исчезновения соединения (например, сокет TCP)
Если вы проведете параллель между процессом A и B по сравнению с двумя компьютерами в сети, типичным решением для этого будет то, что процесс B будет очищаться после каждого вызова API из процесса A, или будет разрушать свой список соединений и в конечном итоге тайм-аут и очистите ресурсы процесса A, если он не получил ответа от процесса A по истечении заданного промежутка времени.