<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>http://dev.kaibel.net/index.php?action=history&amp;feed=atom&amp;title=POSIX_Message_Queues</id>
	<title>POSIX Message Queues - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="http://dev.kaibel.net/index.php?action=history&amp;feed=atom&amp;title=POSIX_Message_Queues"/>
	<link rel="alternate" type="text/html" href="http://dev.kaibel.net/index.php?title=POSIX_Message_Queues&amp;action=history"/>
	<updated>2026-08-25T08:20:32Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in dev.kaibel.net</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>http://dev.kaibel.net/index.php?title=POSIX_Message_Queues&amp;diff=68&amp;oldid=prev</id>
		<title>PhilKa am 21. Oktober 2025 um 14:03 Uhr</title>
		<link rel="alternate" type="text/html" href="http://dev.kaibel.net/index.php?title=POSIX_Message_Queues&amp;diff=68&amp;oldid=prev"/>
		<updated>2025-10-21T14:03:01Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;de&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version vom 21. Oktober 2025, 16:03 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Zeile 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= POSIX Message Queues =&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= POSIX Message Queues =&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&#039;&#039;&#039;POSIX Message Queues&#039;&#039;&#039; (deutsch: *POSIX-Nachrichtenwarteschlangen*) sind ein Mechanismus zur &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;**&lt;/del&gt;Interprozesskommunikation (IPC)&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;**&lt;/del&gt;, der es Prozessen erlaubt, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;**&lt;/del&gt;Nachrichten über eine systemweite Warteschlange auszutauschen&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;**&lt;/del&gt;.   &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&#039;&#039;&#039;POSIX Message Queues&#039;&#039;&#039; (deutsch: *POSIX-Nachrichtenwarteschlangen*) sind ein Mechanismus zur &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039;&lt;/ins&gt;Interprozesskommunikation (IPC)&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039;&lt;/ins&gt;, der es Prozessen erlaubt, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039;&lt;/ins&gt;Nachrichten über eine systemweite Warteschlange auszutauschen&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039;&lt;/ins&gt;.   &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Sie sind in der &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;**&lt;/del&gt;POSIX-Norm (IEEE Std 1003.1b-1993)&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;** &lt;/del&gt;definiert und bieten eine modernere und leistungsfähigere Alternative zu den älteren System-V-Nachrichtenwarteschlangen.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Sie sind in der &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039;&lt;/ins&gt;POSIX-Norm (IEEE Std 1003.1b-1993)&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039; &lt;/ins&gt;definiert und bieten eine modernere und leistungsfähigere Alternative zu den älteren System-V-Nachrichtenwarteschlangen.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;---&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;---&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l8&quot;&gt;Zeile 8:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 8:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Grundprinzip ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Grundprinzip ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Eine POSIX Message Queue (Nachrichtenwarteschlange) funktioniert ähnlich wie eine FIFO-Queue:   &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Eine POSIX Message Queue (Nachrichtenwarteschlange) funktioniert ähnlich wie eine FIFO-Queue:   &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Prozesse können Nachrichten &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;**&lt;/del&gt;anhängen (senden)&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;** &lt;/del&gt;und &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;**&lt;/del&gt;entnehmen (empfangen)&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;**&lt;/del&gt;.   &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Prozesse können Nachrichten &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039;&lt;/ins&gt;anhängen (senden)&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039; &lt;/ins&gt;und &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039;&lt;/ins&gt;entnehmen (empfangen)&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039;&lt;/ins&gt;.   &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Im Gegensatz zu klassischen Pipes oder Sockets werden hier &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;**&lt;/del&gt;strukturierte Nachrichten&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;** &lt;/del&gt;mit einer &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;**&lt;/del&gt;Priorität&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;** &lt;/del&gt;verwaltet.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Im Gegensatz zu klassischen Pipes oder Sockets werden hier &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039;&lt;/ins&gt;strukturierte Nachrichten&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039; &lt;/ins&gt;mit einer &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039;&lt;/ins&gt;Priorität&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039; &lt;/ins&gt;verwaltet.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l21&quot;&gt;Zeile 21:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 21:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;→ Nachrichten werden in der Reihenfolge ihrer &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;**&lt;/del&gt;Priorität&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;** &lt;/del&gt;(höchste zuerst) abgearbeitet.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;→ Nachrichten werden in der Reihenfolge ihrer &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039;&lt;/ins&gt;Priorität&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039; &lt;/ins&gt;(höchste zuerst) abgearbeitet.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;---&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;---&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>PhilKa</name></author>
	</entry>
	<entry>
		<id>http://dev.kaibel.net/index.php?title=POSIX_Message_Queues&amp;diff=66&amp;oldid=prev</id>
		<title>PhilKa: Die Seite wurde neu angelegt: „= POSIX Message Queues =  &#039;&#039;&#039;POSIX Message Queues&#039;&#039;&#039; (deutsch: *POSIX-Nachrichtenwarteschlangen*) sind ein Mechanismus zur **Interprozesskommunikation (IPC)**, der es Prozessen erlaubt, **Nachrichten über eine systemweite Warteschlange auszutauschen**.   Sie sind in der **POSIX-Norm (IEEE Std 1003.1b-1993)** definiert und bieten eine modernere und leistungsfähigere Alternative zu den älteren System-V-Nachrichtenwarteschlangen.  ---  == Grundprinzip ==…“</title>
		<link rel="alternate" type="text/html" href="http://dev.kaibel.net/index.php?title=POSIX_Message_Queues&amp;diff=66&amp;oldid=prev"/>
		<updated>2025-10-21T14:01:33Z</updated>

		<summary type="html">&lt;p&gt;Die Seite wurde neu angelegt: „= POSIX Message Queues =  &amp;#039;&amp;#039;&amp;#039;POSIX Message Queues&amp;#039;&amp;#039;&amp;#039; (deutsch: *POSIX-Nachrichtenwarteschlangen*) sind ein Mechanismus zur **Interprozesskommunikation (IPC)**, der es Prozessen erlaubt, **Nachrichten über eine systemweite Warteschlange auszutauschen**.   Sie sind in der **POSIX-Norm (IEEE Std 1003.1b-1993)** definiert und bieten eine modernere und leistungsfähigere Alternative zu den älteren System-V-Nachrichtenwarteschlangen.  ---  == Grundprinzip ==…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= POSIX Message Queues =&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;POSIX Message Queues&amp;#039;&amp;#039;&amp;#039; (deutsch: *POSIX-Nachrichtenwarteschlangen*) sind ein Mechanismus zur **Interprozesskommunikation (IPC)**, der es Prozessen erlaubt, **Nachrichten über eine systemweite Warteschlange auszutauschen**.  &lt;br /&gt;
Sie sind in der **POSIX-Norm (IEEE Std 1003.1b-1993)** definiert und bieten eine modernere und leistungsfähigere Alternative zu den älteren System-V-Nachrichtenwarteschlangen.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
== Grundprinzip ==&lt;br /&gt;
Eine POSIX Message Queue (Nachrichtenwarteschlange) funktioniert ähnlich wie eine FIFO-Queue:  &lt;br /&gt;
Prozesse können Nachrichten **anhängen (senden)** und **entnehmen (empfangen)**.  &lt;br /&gt;
Im Gegensatz zu klassischen Pipes oder Sockets werden hier **strukturierte Nachrichten** mit einer **Priorität** verwaltet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+-------------------------+&lt;br /&gt;
|   Warteschlange         |   (z. B. /myqueue)&lt;br /&gt;
|-------------------------|&lt;br /&gt;
|  Priorität 10: &amp;quot;Start&amp;quot;  |&lt;br /&gt;
|  Priorität  5: &amp;quot;Ping&amp;quot;   |&lt;br /&gt;
|  Priorität  1: &amp;quot;Stop&amp;quot;   |&lt;br /&gt;
+-------------------------+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
→ Nachrichten werden in der Reihenfolge ihrer **Priorität** (höchste zuerst) abgearbeitet.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
== Eigenschaften ==&lt;br /&gt;
* Kommunikation zwischen beliebigen Prozessen über Namen (z. B. &amp;lt;code&amp;gt;/myqueue&amp;lt;/code&amp;gt;)&lt;br /&gt;
* Nachrichtenbasierte Kommunikation (keine Bytestreams)&lt;br /&gt;
* Nachrichten enthalten Nutzdaten + Priorität&lt;br /&gt;
* Thread-sicher und asynchron nutzbar&lt;br /&gt;
* Optionale Benachrichtigung via Signal oder Thread&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
== Header-Dateien ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;mqueue.h&amp;gt;&lt;br /&gt;
#include &amp;lt;fcntl.h&amp;gt;      // O_CREAT, O_RDWR&lt;br /&gt;
#include &amp;lt;sys/stat.h&amp;gt;   // mode_t&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beim Linken ist meist die Echtzeitbibliothek erforderlich:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
gcc main.c -o main -lrt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
== Aufbau einer Message Queue ==&lt;br /&gt;
Eine POSIX Message Queue besitzt folgende Parameter:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Attribut !! Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| Name || Beginnt immer mit &amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt; (z. B. &amp;lt;code&amp;gt;/demoqueue&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
| Nachrichtenkapazität || Maximale Anzahl gespeicherter Nachrichten&lt;br /&gt;
|-&lt;br /&gt;
| Nachrichtenlänge || Maximale Größe einer Nachricht (Bytes)&lt;br /&gt;
|-&lt;br /&gt;
| Flags || Öffnungs- und Zugriffsmodi (z. B. O_RDONLY, O_NONBLOCK)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Diese Parameter können beim Anlegen mit &amp;lt;code&amp;gt;mq_open()&amp;lt;/code&amp;gt; übergeben werden.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
== Wichtige Funktionen ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Funktion !! Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;mq_open()&amp;lt;/code&amp;gt; || Öffnet oder erzeugt eine Message Queue&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;mq_send()&amp;lt;/code&amp;gt; || Sendet eine Nachricht in die Queue&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;mq_receive()&amp;lt;/code&amp;gt; || Empfängt die älteste oder höchstpriorisierte Nachricht&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;mq_close()&amp;lt;/code&amp;gt; || Schließt die Queue im aktuellen Prozess&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;mq_unlink()&amp;lt;/code&amp;gt; || Löscht die Queue (wie &amp;lt;code&amp;gt;unlink()&amp;lt;/code&amp;gt; für Dateien)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;mq_getattr()&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;mq_setattr()&amp;lt;/code&amp;gt; || Liest oder ändert Attribute&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;mq_notify()&amp;lt;/code&amp;gt; || Registriert Benachrichtigung bei neuen Nachrichten&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
== Beispiel: Einfacher Sender ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;lt;mqueue.h&amp;gt;&lt;br /&gt;
#include &amp;lt;fcntl.h&amp;gt;&lt;br /&gt;
#include &amp;lt;string.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define QUEUE_NAME &amp;quot;/demoqueue&amp;quot;&lt;br /&gt;
&lt;br /&gt;
int main() {&lt;br /&gt;
    mqd_t mq;&lt;br /&gt;
    struct mq_attr attr;&lt;br /&gt;
    attr.mq_flags = 0;&lt;br /&gt;
    attr.mq_maxmsg = 10;     // maximal 10 Nachrichten&lt;br /&gt;
    attr.mq_msgsize = 256;   // maximal 256 Byte pro Nachricht&lt;br /&gt;
    attr.mq_curmsgs = 0;&lt;br /&gt;
&lt;br /&gt;
    mq = mq_open(QUEUE_NAME, O_CREAT | O_WRONLY, 0644, &amp;amp;attr);&lt;br /&gt;
    if (mq == (mqd_t)-1) {&lt;br /&gt;
        perror(&amp;quot;mq_open&amp;quot;);&lt;br /&gt;
        exit(EXIT_FAILURE);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    char message[256];&lt;br /&gt;
    sprintf(message, &amp;quot;Hallo vom Sender!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    if (mq_send(mq, message, strlen(message) + 1, 5) == -1) {&lt;br /&gt;
        perror(&amp;quot;mq_send&amp;quot;);&lt;br /&gt;
    } else {&lt;br /&gt;
        printf(&amp;quot;Nachricht gesendet.\n&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    mq_close(mq);&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
== Beispiel: Einfacher Empfänger ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;lt;mqueue.h&amp;gt;&lt;br /&gt;
#include &amp;lt;fcntl.h&amp;gt;&lt;br /&gt;
#include &amp;lt;string.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define QUEUE_NAME &amp;quot;/demoqueue&amp;quot;&lt;br /&gt;
&lt;br /&gt;
int main() {&lt;br /&gt;
    mqd_t mq;&lt;br /&gt;
    char buffer[256];&lt;br /&gt;
    unsigned int prio;&lt;br /&gt;
&lt;br /&gt;
    mq = mq_open(QUEUE_NAME, O_RDONLY);&lt;br /&gt;
    if (mq == (mqd_t)-1) {&lt;br /&gt;
        perror(&amp;quot;mq_open&amp;quot;);&lt;br /&gt;
        exit(EXIT_FAILURE);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    if (mq_receive(mq, buffer, sizeof(buffer), &amp;amp;prio) &amp;gt;= 0) {&lt;br /&gt;
        printf(&amp;quot;Empfangen (Priorität %u): %s\n&amp;quot;, prio, buffer);&lt;br /&gt;
    } else {&lt;br /&gt;
        perror(&amp;quot;mq_receive&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    mq_close(mq);&lt;br /&gt;
    mq_unlink(QUEUE_NAME); // Queue entfernen&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Beispielausgabe:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ./sender&lt;br /&gt;
Nachricht gesendet.&lt;br /&gt;
$ ./empfaenger&lt;br /&gt;
Empfangen (Priorität 5): Hallo vom Sender!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
== Beispiel: Nicht-blockierende Nutzung ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
mq = mq_open(&amp;quot;/demoqueue&amp;quot;, O_RDONLY | O_NONBLOCK);&lt;br /&gt;
if (mq_receive(mq, buffer, sizeof(buffer), &amp;amp;prio) == -1) {&lt;br /&gt;
    if (errno == EAGAIN)&lt;br /&gt;
        printf(&amp;quot;Keine Nachrichten vorhanden.\n&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
== Beispiel: Benachrichtigung über neue Nachrichten ==&lt;br /&gt;
Ein Prozess kann sich mit &amp;lt;code&amp;gt;mq_notify()&amp;lt;/code&amp;gt; registrieren, um ein Signal oder einen Thread-Callback zu erhalten, wenn eine neue Nachricht eintrifft.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;lt;mqueue.h&amp;gt;&lt;br /&gt;
#include &amp;lt;signal.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define QUEUE_NAME &amp;quot;/demoqueue&amp;quot;&lt;br /&gt;
&lt;br /&gt;
void handler(union sigval sv) {&lt;br /&gt;
    mqd_t mq = *((mqd_t*)sv.sival_ptr);&lt;br /&gt;
    char msg[256];&lt;br /&gt;
    unsigned int prio;&lt;br /&gt;
    mq_receive(mq, msg, sizeof(msg), &amp;amp;prio);&lt;br /&gt;
    printf(&amp;quot;Neue Nachricht (Prio %u): %s\n&amp;quot;, prio, msg);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main() {&lt;br /&gt;
    mqd_t mq = mq_open(QUEUE_NAME, O_CREAT | O_RDONLY, 0644, NULL);&lt;br /&gt;
&lt;br /&gt;
    struct sigevent sev;&lt;br /&gt;
    sev.sigev_notify = SIGEV_THREAD;&lt;br /&gt;
    sev.sigev_notify_function = handler;&lt;br /&gt;
    sev.sigev_notify_attributes = NULL;&lt;br /&gt;
    sev.sigev_value.sival_ptr = &amp;amp;mq;&lt;br /&gt;
&lt;br /&gt;
    mq_notify(mq, &amp;amp;sev);  // registrieren&lt;br /&gt;
&lt;br /&gt;
    printf(&amp;quot;Warte auf Nachrichten...\n&amp;quot;);&lt;br /&gt;
    while (1) pause();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
== Attribute einer Queue ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
struct mq_attr attr;&lt;br /&gt;
mq_getattr(mq, &amp;amp;attr);&lt;br /&gt;
&lt;br /&gt;
printf(&amp;quot;Max. Nachrichten: %ld\n&amp;quot;, attr.mq_maxmsg);&lt;br /&gt;
printf(&amp;quot;Nachrichtengröße: %ld\n&amp;quot;, attr.mq_msgsize);&lt;br /&gt;
printf(&amp;quot;Aktuelle Nachrichten: %ld\n&amp;quot;, attr.mq_curmsgs);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
== Vergleich mit anderen IPC-Mechanismen ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Mechanismus !! Kommunikationstyp !! Besonderheiten&lt;br /&gt;
|-&lt;br /&gt;
| [[Pipe (Unix)]] || Stream (Bytestrom) || einfach, unstrukturiert&lt;br /&gt;
|-&lt;br /&gt;
| [[FIFO (Named Pipe)]] || Stream || über Dateisystemname erreichbar&lt;br /&gt;
|-&lt;br /&gt;
| [[POSIX Message Queues]] || Nachricht (strukturiert, priorisiert) || speicherbasiert, modern&lt;br /&gt;
|-&lt;br /&gt;
| [[System-V Message Queues]] || Nachricht || älter, weniger portabel&lt;br /&gt;
|-&lt;br /&gt;
| [[Unix Domain Sockets]] || Stream oder Datagram || flexibel, duplex, bidirektional&lt;br /&gt;
|-&lt;br /&gt;
| [[Shared Memory]] || Speicherzugriff || extrem schnell, aber Synchronisation nötig&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
== Vorteile ==&lt;br /&gt;
* Nachrichtenorientiert (keine Bytestreams)&lt;br /&gt;
* Priorisierung integriert&lt;br /&gt;
* Blockierendes oder nicht-blockierendes Verhalten möglich&lt;br /&gt;
* Ereignisbenachrichtigung (mq_notify)&lt;br /&gt;
* POSIX-standardisiert und portabel&lt;br /&gt;
&lt;br /&gt;
== Nachteile ==&lt;br /&gt;
* Begrenzte Nachrichtenlänge&lt;br /&gt;
* Verwaltung durch Kernel (etwas Overhead)&lt;br /&gt;
* Nur auf demselben System verfügbar (nicht über Netzwerk)&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
== Typische Einsatzgebiete ==&lt;br /&gt;
* Kommunikation zwischen Prozessen mit klarer Nachrichtenstruktur  &lt;br /&gt;
* Ereignisbasierte Systeme (Produzent–Konsument)  &lt;br /&gt;
* GUI–Daemon-Kommunikation  &lt;br /&gt;
* Steuer- und Regelprozesse in Embedded-Systemen  &lt;br /&gt;
* Ersatz für Pipes bei strukturierter Datenübertragung&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Interprozesskommunikation (IPC)]]&lt;br /&gt;
* [[POSIX Shared Memory]]&lt;br /&gt;
* [[Unix Domain Sockets]]&lt;br /&gt;
* [[Named Pipe (FIFO)]]&lt;br /&gt;
* [[System-V Message Queue]]&lt;br /&gt;
* [[POSIX Threads]]&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
== Quellen ==&lt;br /&gt;
* IEEE Std 1003.1-2001 – POSIX Realtime Extensions  &lt;br /&gt;
* Stevens, W. Richard: &amp;#039;&amp;#039;UNIX Network Programming, Vol. 2: Interprocess Communications&amp;#039;&amp;#039;, Prentice Hall  &lt;br /&gt;
* The Linux Programming Interface – Michael Kerrisk, 2010  &lt;br /&gt;
* Linux man pages: &amp;lt;code&amp;gt;man mq_overview&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;man mq_open&amp;lt;/code&amp;gt;  &lt;br /&gt;
* GNU C Library Documentation&lt;/div&gt;</summary>
		<author><name>PhilKa</name></author>
	</entry>
</feed>