<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hardening consulting (Posts about socketpair)</title><link>https://www.hardening-consulting.com/</link><description></description><atom:link href="https://www.hardening-consulting.com/en/categories/socketpair.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><lastBuildDate>Mon, 20 Apr 2026 10:00:59 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>Using socketpair and passfd     </title><link>https://www.hardening-consulting.com/en/posts/20260417-socketpair-and-passfd.html</link><dc:creator>David FORT</dc:creator><description>&lt;div&gt;&lt;p&gt;&lt;img class="alignright" src="https://www.hardening-consulting.com/images/improvement.png" width="100px"&gt;&lt;/p&gt;
&lt;p&gt;I've always been aware of the &lt;code&gt;passfd&lt;/code&gt; feature available on Linux, but I never had the chance to use it 
for real in my projects. While testing some system design, I was able to experiment with it, and I find that 
it opens up a lot of possibilities. Let's see that.&lt;/p&gt;
&lt;p&gt;&lt;br style="‘clear:" both&gt;&lt;/p&gt;
&lt;h2&gt;Socket pair&lt;/h2&gt;
&lt;p&gt;There’s nothing too complicated about &lt;code&gt;socketpair&lt;/code&gt;, it allows you to have two interconnected sockets with a single system call,
so that when you send bytes on one socket, you can read them on the other:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="cp"&gt;#include&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cpf"&gt;&amp;lt;sys/socket.h&amp;gt;&lt;/span&gt;

&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;socketpair&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;domain&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;type&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;protocol&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;sv&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;It’s more convenient than the &lt;code&gt;pipe()&lt;/code&gt; or &lt;code&gt;pipe2()&lt;/code&gt; system calls, which provide 2 file descriptors, one for reading and another for writing. &lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.hardening-consulting.com/en/posts/20260417-socketpair-and-passfd.html"&gt;Read more…&lt;/a&gt; (6 min remaining to read)&lt;/p&gt;&lt;/div&gt;</description><category>C</category><category>linux</category><category>passfd</category><category>socketpair</category><guid>https://www.hardening-consulting.com/en/posts/20260417-socketpair-and-passfd.html</guid><pubDate>Fri, 17 Apr 2026 06:11:00 GMT</pubDate></item></channel></rss>