Entfernen posix shared memory, wenn nicht in Gebrauch?

Gibt es eine Möglichkeit, linux-spezifisch oder nicht, haben posix-shared-memory-Segmente (die mit shm_open()) entfernt, wenn kein Prozess mit Ihnen. also haben Sie Referenz-gezählt und vom system entfernen, wenn die Referenz wird 0

Ein paar Hinweise:

  • Zur Gründung einer atexit-handler zu entfernen, Sie funktioniert nicht, wenn das Programm abstürzt.

  • Derzeit ist die linux-spezifische Art und Weise, die ich einbetten der pid-in den segment-Namen, und versuchen Sie zu finden, nicht verwendete Segmente Fuß /dev/shm in einem externen Programm. Das hat den Nachteil, dass in regelmäßigen Abständen reinigen Sie Sie extern in einer eher hackish Weg.

  • Als Programm kann ausgeführt werden, mehrere Kopien, mit einem gut definierten Namen für das segment ein, dass das Programm verwendet, wenn es startet, ist nicht möglich.

  • Fragen Sie, ob es eine system-library-Ansatz, um diese, anstatt es von hand?
  • Man könnte den Gebrauch von gdb zum Debuggen Ihrer Anwendung, damit es nicht abstürzt? Das lindert das problem, dass crashy Anwendungen können nicht Aufräumen hinter sich...
InformationsquelleAutor user964970 | 2012-11-14
Schreibe einen Kommentar