Unix 把建立新 process 拆成 fork()(複製)和 execve()(替換)兩步, 中間留下一個「間隙」讓你自由操作子 process 的 fd table。 Shell 的 pipe、redirection、甚至 sudo 的權限切換,全靠這個間隙實現。 本文拆解 fork-exec 分離設計的組合性優勢、fd 繼承機制的實作細節、 與 Windows CreateProcess 的 trade-off 比較, 以及 IPC 路徑的真實效能成本——「繞好多路」到底是認知錯覺還是實際瓶頸。
Arthur
Software Engineer | Full-stack dev | Systems thinker | Taiwan 🇹🇼
Software engineer specializing in frontend infrastructure and modern web architecture. I'm drawn to the layers most engineers stop at — compilers, bundler internals, networking primitives, and the Unix toolchain.
Learn more about meRecent Posts
在終端按下一個鍵,程式就收到了輸入。這個看似理所當然的過程, 實際上穿越了六個架構層級、三種運行空間,端到端延遲不到 20ms。 本文從第一性原理拆解完整事件鏈路:硬體中斷、kernel evdev、 compositor 事件分發、terminal 的協議翻譯、PTY/TTY 的 line discipline 機制, 到最終應用程式的 stdin 讀取。深入理解 Unix「一切皆檔案」哲學的實際運作方式。
同一台主機上的兩個進程要交換資料,為什麼不直接走 TCP loopback,而要用一個 .sock 檔案? 本文從 .sock 檔案的本質出發,拆解 Unix Domain Socket 的 fd 建立流程、 Kernel 根據 socket 族(AF_INET vs AF_UNIX)的內部路由機制、 VFS 與 IPC(Socket)抽象層如何讓同一套 read/write API 走完全不同的資料路徑, 並以 Node.js net 模組實作 TCP 與 Unix socket 的對比範例。
所有 parser 都遵循相同的核心流程:tokenize → parse → transform。本文從 grammar 的形式化定義出發,跨越編譯器、template engine、data parser 與 binary parser 四大領域,建立統一的解析器心智模型。
同樣是把封包送到後端伺服器,L4 只掃條碼就放行,L7 卻要拆開包裹讀完信才決定寄去哪。 本文從封包解封深度出發,比較 L4 與 L7 Load Balancing 的轉發機制、效能差異與適用場景, 並以 Linux IPVS 和 Nginx 為例,示範兩種層級的實作方式。