<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>C on Wokron&#39;s Blog</title>
    <link>https://wokron.github.io/en/tags/c/</link>
    <description>Recent content in C on Wokron&#39;s Blog</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <copyright>©2022-2026 Yitang Yang. All rights reserved.</copyright>
    <lastBuildDate>Fri, 23 May 2025 17:22:16 +0800</lastBuildDate>
    <atom:link href="https://wokron.github.io/en/tags/c/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Trigger (Almost) Every Signal</title>
      <link>https://wokron.github.io/en/posts/raise-signals/</link>
      <pubDate>Fri, 23 May 2025 17:22:16 +0800</pubDate>
      <guid>https://wokron.github.io/en/posts/raise-signals/</guid>
      <description>Type kill -L and you&amp;rsquo;ll see all the standard signals available on Linux — 31 in total.
$ kill -L 1 HUP 2 INT 3 QUIT 4 ILL 5 TRAP 6 ABRT 7 BUS 8 FPE 9 KILL 10 USR1 11 SEGV 12 USR2 13 PIPE 14 ALRM 15 TERM 16 STKFLT 17 CHLD 18 CONT 19 STOP 20 TSTP 21 TTIN 22 TTOU 23 URG 24 XCPU 25 XFSZ 26 VTALRM 27 PROF 28 WINCH 29 POLL 30 PWR 31 SYS This time, let&amp;rsquo;s try to trigger these signals in their intended scenarios.</description>
    </item>
    <item>
      <title>Linux Process Memory Management</title>
      <link>https://wokron.github.io/en/posts/program-memory-management/</link>
      <pubDate>Sat, 17 May 2025 09:33:11 +0800</pubDate>
      <guid>https://wokron.github.io/en/posts/program-memory-management/</guid>
      <description>We&amp;rsquo;ve all learned that a process&amp;rsquo;s memory consists of the heap and the stack. But this model is still too abstract — it conceals many operating system details. So here&amp;rsquo;s a brief rundown of process memory management.
Heap Growth libc provides the malloc function for heap memory allocation. Under the hood, it relies on the brk system call.
From the kernel&amp;rsquo;s perspective, the heap is a simple structure. It consists of a fixed heap base (the end symbol) and a movable heap top (called the program break).</description>
    </item>
    <item>
      <title>Introduction to the QEMU Emulator</title>
      <link>https://wokron.github.io/en/posts/qemu-introduction/</link>
      <pubDate>Sun, 21 Jan 2024 14:33:21 +0800</pubDate>
      <guid>https://wokron.github.io/en/posts/qemu-introduction/</guid>
      <description>This article is part of the BUAA Operating Systems course preparatory tutorial. This version was written by me.
In 2024, the course lab environment was changed from GXemul to QEMU. To help students adapt to the new environment, two new articles were added to the preparatory tutorial: &amp;ldquo;GDB: Dissecting Programs&amp;rdquo; and &amp;ldquo;Introduction to the QEMU Emulator.&amp;rdquo;
An operating system is a program that runs directly on computer hardware, managing hardware resources below while providing unified services to software above.</description>
    </item>
    <item>
      <title>GDB: Dissecting Programs</title>
      <link>https://wokron.github.io/en/posts/gdb-tutorial/</link>
      <pubDate>Thu, 18 Jan 2024 19:44:35 +0800</pubDate>
      <guid>https://wokron.github.io/en/posts/gdb-tutorial/</guid>
      <description>This article is part of the BUAA Operating Systems course preparatory tutorial. This version was written by me.
In 2024, the course lab environment was changed from GXemul to QEMU. To help students adapt to the new environment, two new articles were added to the preparatory tutorial: &amp;ldquo;GDB: Dissecting Programs&amp;rdquo; and &amp;ldquo;Introduction to the QEMU Emulator.&amp;rdquo;
Think back to when you first entered the world of programming. Everyone has had this experience: a carefully written program just won&amp;rsquo;t produce the correct result, and even after reviewing the code from top to bottom several times, the hidden bug remains elusive.</description>
    </item>
    <item>
      <title>A Practical CMake Tutorial</title>
      <link>https://wokron.github.io/en/posts/practical-cmake-tutorial/</link>
      <pubDate>Sun, 03 Sep 2023 11:00:23 +0800</pubDate>
      <guid>https://wokron.github.io/en/posts/practical-cmake-tutorial/</guid>
      <description>1. Introduction I&amp;rsquo;ve been working on a C++ project recently and had to learn CMake. Honestly, CMake&amp;rsquo;s quirky syntax can be quite intimidating at first. But once you get hands-on, you&amp;rsquo;ll find that only a small subset is needed day-to-day, and it generally follows predictable patterns. Master this subset and you can likely organize a fairly large project. That&amp;rsquo;s exactly what this tutorial aims to cover.
Of course, you&amp;rsquo;ll need to understand compilation and linking before reading this.</description>
    </item>
  </channel>
</rss>
