<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" 
  xmlns:content="http://purl.org/rss/1.0/modules/content/" 
  xmlns:dc="http://purl.org/dc/elements/1.1/" 
  xmlns:atom="http://www.w3.org/2005/Atom" 
  xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" 
  xmlns:media="http://search.yahoo.com/mrss/">
  <channel>
    <title>Low-Tec on Mark Zhu&#39;s Blog</title>
    <link>https://blog.mygraphql.com/en/tags/low-tec/</link>
    <description>Recent content in Low-Tec on Mark Zhu&#39;s Blog</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <managingEditor>labile.zhu@gmail.com (Mark Zhu)</managingEditor>
    <webMaster>labile.zhu@gmail.com (Mark Zhu)</webMaster>
    <copyright>Mark Zhu ©2026, All Rights Reserved</copyright>
    <lastBuildDate>Sat, 06 Jul 2024 23:12:15 +0800</lastBuildDate>
    
        <atom:link href="https://blog.mygraphql.com/en/tags/low-tec/index.xml" rel="self" type="application/rss+xml" />
    

      
      <item>
        <title>Linux: Everything is a file; peekfd: peek write/read of every file</title>
        <link>https://blog.mygraphql.com/en/notes/low-tec/trace/peekfd/</link>
        <pubDate>Sat, 06 Jul 2024 23:12:15 +0800</pubDate>
        <author>labile.zhu@gmail.com (Mark Zhu)</author>
        <atom:modified>Sat, 06 Jul 2024 23:12:15 +0800</atom:modified>
        <guid>https://blog.mygraphql.com/en/notes/low-tec/trace/peekfd/</guid>
        <description>&lt;p&gt;&lt;img src=&#34;https://blog.mygraphql.com/en/notes/low-tec/trace/peekfd/index.assets/logo.jpeg&#34; alt=&#34;img&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;
&lt;h3 id=&#34;introduction&#34;&gt;Introduction&lt;/h3&gt;
&lt;p&gt;Most of the data flows in Linux, including inter-process communication, sockets, etc., are implemented through file descriptors (fd) reading and writing. When troubleshooting, if you can peek at the flow of fd, many problems can be quickly proved/falsified. This article introduces an old tool &lt;code&gt;peekfd&lt;/code&gt;, which can complete this task in a certain environment.&lt;/p&gt;
&lt;h3 id=&#34;problems-i-encountered&#34;&gt;Problems I encountered&lt;/h3&gt;
&lt;p&gt;I talked about a scenario in &lt;a href=&#34;https://blog.mygraphql.com/zh/notes/low-tec/inter-process/child-process-wait-die-lock/&#34;&gt;《I Lost to AI - A Brief Note on a Parent-Child Process Interlocking Trap, I Digged It Myself》&lt;/a&gt;. The following is a diagram of the parent-child relationship of the process. I want to use &lt;code&gt;kill -QUIT $&lt;/code&gt; (Why not &lt;code&gt;jstack&lt;/code&gt;?) to view the jvm stack. Ideally, &lt;code&gt;kill -QUIT $test_case_jvm&lt;/code&gt; will make &lt;code&gt;test cases jvm&lt;/code&gt; print a stack dump to stdout, and then &lt;code&gt;maven jvm&lt;/code&gt; will also copy and print it out. But the reality is that &lt;code&gt;maven jvm&lt;/code&gt; eats the stack dump output of &lt;code&gt;test cases jvm&lt;/code&gt; and does not spit it out.&lt;/p&gt;</description>
        
        <dc:creator>Mark Zhu</dc:creator>
        
        
        
        
          
            
              <category>inter-process</category>
            
          
            
              <category>fd</category>
            
          
            
              <category>trace</category>
            
          
            
              <category>ptrace</category>
            
          
            
              <category>low-tec</category>
            
          
        
        
        
      </item>
      

    
  </channel>
</rss>
