Изоляция и многократное создание экземпляра библиотеки C в процессе - PullRequest
8 голосов
/ 17 августа 2011

У нас есть библиотека C (.lib windows & .a linux), которая позволяет только создавать синглтон и которая также не закрывается должным образом (утечка памяти и потоки остались живы) после создания экземпляра.

Переписав его и выискивая ошибки, существует ли простой способ изолировать этот вид некорректно работающего кода таким образом, чтобы можно было снять ограничение singleton, а нечистый tidyup мог быть помещен в песочницу?

Меня в основном интересуют любые внутрипроцессные варианты, если таковые имеются. Отдельный процесс, очевидно, решил бы ее, но потребовал бы архитектурных накладных расходов, чтобы позволить удаленное управление библиотекой, если для этого нет решений с очень низким уровнем воздействия (у него широкий API, поэтому сохранение большого количества клея не особенно привлекательно).

1 Ответ

2 голосов
/ 17 августа 2011

Извините, но нет простого простого способа сделать это.Песочница для плохо функционирующих библиотек обычно выполняется с использованием отдельных процессов, которые вы уже предложили сами.Инструмент IPC, такой как Protocol Buffers, может помочь в определении и реализации протокола IPC.

...