<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/refs.fileprocess.process.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'de',
  ),
  'this' => 
  array (
    0 => 'book.sem.php',
    1 => 'Semaphore',
    2 => 'Semaphore, Shared Memory und IPC',
  ),
  'up' => 
  array (
    0 => 'refs.fileprocess.process.php',
    1 => 'Erweiterungen zur Prozesskontrolle',
  ),
  'prev' => 
  array (
    0 => 'class.volatile.php',
    1 => 'Volatile',
  ),
  'next' => 
  array (
    0 => 'sem.setup.php',
    1 => 'Installation/Konfiguration',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'de',
    'path' => 'reference/sem/book.xml',
  ),
  'history' => 
  array (
  ),
  'extra_header_links' => 
  array (
    'rel' => 'alternate',
    'href' => '/manual/en/feeds/book.sem.atom',
    'type' => 'application/atom+xml',
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="book.sem" class="book">
 
 <h1 class="title">Semaphore, Shared Memory und IPC</h1>
 

 
 <div id="intro.sem" class="preface">
  <h1 class="title">Einführung</h1>
  <p class="simpara">
   Diese Erweiterungen bieten Schnittstellen zur Nutzung der Unix System V
   IPC-Funktionen. Sie unterstützen Semaphore, gemeinsame Speicherbereiche
   (Shared Memory) und den Nachrichtenaustausch zwischen Prozessen (Inter
   Process Communication - IPC).
  </p>
  <p class="simpara">
   Semaphore können genutzt werden, um den exklusiven Zugriff auf eine
   Ressource zu koordinieren oder um die Anzahl der gleichzeitigen Zugriffe
   auf eine Ressource zu limitieren.
  </p>
  <p class="para">
   Diese Erweiterungen bieten auch Funktionen zur Nutzung von gemeinsamen
   Speicherbereichen. Der gemeinsamen Speicherbereich kann verwendet werden,
   um den Zugriff auf globale Variablen zu gewähren. Verschiedene
   httpd-Daemons und sogar in anderen Sprachen (z. B. Perl, C, ...)
   geschriebene Anwendungen können auf diese Daten zugreifen und so einen
   globalen Datenaustausch bereitstellen. Zu beachten ist, dass der gemeinsame
   Speicherbereich KEINEN Schutz gegen gleichzeitige Zugriffe bietet. Zur
   Synchronisierung sollten Semaphoren verwendet werden.
   <table class="doctable table">
    <caption><strong>Durch Unix vorgegebene Limits für den gemeinsamen Speicherbereich</strong></caption>
    
     <tbody class="tbody">
      <tr>
       <td>SHMMAX</td>
       <td>
        Die maximale Größe des gemeinsamen Speicherbereichs; üblich sind
        131072 Bytes
       </td>
      </tr>

      <tr>
       <td>SHMMIN</td>
       <td>
        Die minimale Größe des gemeinsamen Speicherbereichs; üblich ist 1 Byte
       </td>
      </tr>

      <tr>
       <td>SHMMNI</td>
       <td>
        Die maximale Anzahl von gemeinsamen Speichersegmenten auf dem System;
        üblich sind 100
       </td>
      </tr>

      <tr>
       <td>SHMSEG</td>
       <td>
        Die maximale Anzahl von gemeinsamen Speichersegmenten je Prozess;
        üblich sind 6
       </td>
      </tr>

     </tbody>
    
   </table>

  </p>
  <p class="simpara">
   Die Funktionen zum Nachrichtenaustausch können genutzt werden, um
   Nachrichten an andere Prozesse zu verschicken oder zu empfangen. Sie bieten
   einen einfachen und effektiven Weg zum Datenaustausch zwischen Prozessen,
   ohne auf Alternativen wie Unix Domain Sockets zurückgreifen zu müssen.
  </p>
  <blockquote class="note"><p><strong class="note">Hinweis</strong>: 
   <span class="simpara">
    Nur die Funktionen für gemeinsam genutzten Speicher und
    <span class="function"><a href="function.ftok.php" class="function">ftok()</a></span> sind unter Windows verfügbar. Weder Semaphoren
    noch die Funktionen für prozessübergreifenden Nachrichtenaustausch werden
    auf dieser Plattform unterstützt.
   </span>
  </p></blockquote>
 </div>
 

 





 





 






 



 



 




<ul class="chunklist chunklist_book"><li><a href="sem.setup.php">Installation/Konfiguration</a><ul class="chunklist chunklist_book chunklist_children"><li><a href="sem.installation.php">Installation</a></li><li><a href="sem.configuration.php">Laufzeit-Konfiguration</a></li><li><a href="sem.resources.php">Ressource-Typen</a></li></ul></li><li><a href="sem.constants.php">Vordefinierte Konstanten</a></li><li><a href="ref.sem.php">Semaphore Funktionen</a><ul class="chunklist chunklist_book chunklist_children"><li><a href="function.ftok.php">ftok</a> — Erzeugt aus einem Dateipfad und einem Projektbezeichner einen System-V-IPC-Schl&uuml;ssel</li><li><a href="function.msg-get-queue.php">msg_get_queue</a> — Legt eine Nachrichten-Warteschlange an oder h&auml;ngt sich an existierende an</li><li><a href="function.msg-queue-exists.php">msg_queue_exists</a> — Pr&uuml;ft, ob die Nachrichten-Warteschlange existiert</li><li><a href="function.msg-receive.php">msg_receive</a> — Liest eine Nachricht aus einer Nachrichten-Warteschlange aus</li><li><a href="function.msg-remove-queue.php">msg_remove_queue</a> — Entfernt eine Nachrichten-Warteschlange</li><li><a href="function.msg-send.php">msg_send</a> — Send a message to a message queue</li><li><a href="function.msg-set-queue.php">msg_set_queue</a> — Setzt Metadaten in der Datenstruktur der Nachrichten-Warteschlange</li><li><a href="function.msg-stat-queue.php">msg_stat_queue</a> — Liefert Informationen zur Datenstruktur einer Nachrichten-Warteschlange</li><li><a href="function.sem-acquire.php">sem_acquire</a> — Fordert Zugriff auf einen Semaphor an</li><li><a href="function.sem-get.php">sem_get</a> — Fordert Zugriff auf eine Semaphor-ID an</li><li><a href="function.sem-release.php">sem_release</a> — Gibt einen Semaphor frei</li><li><a href="function.sem-remove.php">sem_remove</a> — Entfernt einen Semaphor</li><li><a href="function.shm-attach.php">shm_attach</a> — Erzeugt oder &ouml;ffnet einen gemeinsamen Speicherbereich</li><li><a href="function.shm-detach.php">shm_detach</a> — Beendet die Anbindung an einen gemeinsamen Speicherbereich</li><li><a href="function.shm-get-var.php">shm_get_var</a> — Liest eine Variable aus dem gemeinsamen Speicherbereich</li><li><a href="function.shm-has-var.php">shm_has_var</a> — Check whether a specific entry exists</li><li><a href="function.shm-put-var.php">shm_put_var</a> — Erstellt oder aktualisiert eine Variable im gemeinsamen Speicherbereich</li><li><a href="function.shm-remove.php">shm_remove</a> — Entfernt einen gemeinsamen Speicherbereich unter UNIX</li><li><a href="function.shm-remove-var.php">shm_remove_var</a> — Entfernt eine Variable aus dem gemeinsamen Speicherbereich</li></ul></li><li><a href="class.sysvmessagequeue.php">SysvMessageQueue</a> — The SysvMessageQueue class</li><li><a href="class.sysvsemaphore.php">SysvSemaphore</a> — The SysvSemaphore class</li><li><a href="class.sysvsharedmemory.php">SysvSharedMemory</a> — The SysvSharedMemory class</li></ul></div><?php manual_footer($setup); ?>