<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Systems-Programming on Ou David | Systems Engineer</title><link>https://preview.vvivid.dev/tags/systems-programming/</link><description>Recent content in Systems-Programming on Ou David | Systems Engineer</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Mon, 15 Jun 2026 13:31:48 +0700</lastBuildDate><atom:link href="https://preview.vvivid.dev/tags/systems-programming/index.xml" rel="self" type="application/rss+xml"/><item><title>The Process API Behind Every Shell Command</title><link>https://preview.vvivid.dev/posts/process_api_behind_every_shell_command/</link><pubDate>Mon, 15 Jun 2026 13:31:48 +0700</pubDate><guid>https://preview.vvivid.dev/posts/process_api_behind_every_shell_command/</guid><description>&lt;p&gt;I&amp;rsquo;ve been reading &lt;a href="https://pages.cs.wisc.edu/~remzi/OSTEP/"&gt;Operating Systems: Three Easy Pieces&lt;/a&gt;, and today I went through chapter 05, the interlude on the Process API. It is a short chapter, but it clarified something important about how processes actually work.&lt;/p&gt;
&lt;p&gt;If you want to see the same idea in practical Go code, I put a small runnable example in the public case-study repo: &lt;a href="https://gitlab.vvivid.dev/showcase/go-lang-case-study/-/tree/main/go/process-api-shell"&gt;go/process-api-shell&lt;/a&gt;. It uses Go&amp;rsquo;s standard &lt;code&gt;os/exec&lt;/code&gt; package to run commands, redirect output, build a simple pipeline, and wait for the processes to finish.&lt;/p&gt;</description></item></channel></rss>