A Hands-On Introduction
Stewart N. Weiss

#Linux
#Unix
#System_Programming
#AI
#AI-driven
#FIFOs
#Unicode
#UTF-8
یاد بگیرید نرمافزار واقعی برای لینوکس بنویسید — نه فقط آن را اجرا کنید.
بیشتر برنامهنویسان هیچوقت واقعاً نمیفهمند لینوکس چگونه کار میکند. چرا؟ چون برنامهنویسی سیستمی بهندرت آموزش داده میشود و ابزارهای آن میتوانند بدون راهنمایی مناسب، دلهرهآور باشند. در نتیجه، بسیاری از توسعهدهندگان به زبانها و فریمورکهای سطح بالا بسنده میکنند — آنها کدی مینویسند که روی لینوکس اجرا میشود، بدون آنکه بدانند این کد چگونه با خود لینوکس تعامل دارد.
اما در دنیای امروز، این کافی نیست تا متمایز باشید. بهویژه با رشد استفاده شرکتها از هوش مصنوعی برای نوشتن نرمافزار، سؤال اصلی این است: چطور در دنیای هوشمصنوعیمحور همچنان مرتبط و مفید باقی بمانید؟ پاسخ این است که واقعاً بفهمید پشتصحنه چه میگذرد.
اگر تا به حال برایتان سوال بوده که فرآیندها چگونه ایجاد میشوند، حافظه و فایلها چطور مدیریت میشوند، یا برنامهها در محیط یونیکس چگونه با یکدیگر ارتباط برقرار میکنند، کتاب System Programming in Linux همه چیز را برایتان روشن خواهد کرد.
این کتاب یک راهنمای عملی برای نوشتن نرمافزاری است که مستقیماً با سیستمعامل لینوکس در ارتباط است. فراتر از دستورات شِل و انتزاعها میروید تا درک کنید هسته سیستم (Kernel) دقیقاً چه میکند — و چگونه میتوانید از طریق کد خودتان با آن تعامل داشته باشید. پروفسور استیوارت ن. وایس بهجای آنکه صرفاً راهحل را به شما بگوید، شما را در مسیر کشف راهحل راهنمایی میکند.
از مفاهیم پایه یونیکس و لینوکس شروع میکنید و به مباحث پیشرفتهتری مانند کنترل فرآیندها، سیگنالها، ارتباط بین فرآیندی، برنامهنویسی چندریسمانی (threading)، و ورودی/خروجی غیرمسدودکننده میرسید. هر فصل شامل نمودارهای مفهومی، کد منبع همراه با توضیحات، و پروژههای عملی است که به شما کمک میکند آموختهها را بلافاصله به کار بگیرید.
در این کتاب با موضوعاتی مانند موارد زیر آشنا میشوید:
پروفسور وایس در کالج هانتر دورهای را طراحی کرده که این کتاب بر اساس آن نوشته شده، و در بیش از ۴۰ سال تدریس برنامهنویسی، به هزاران دانشجو کمک کرده تا از سردرگمی به درک عمیق برسند. سبک نوشتاری روان، عمق فنی، و تمرکز او بر کاربرد واقعی، این کتاب را به یکی از در دسترسترین و قدرتمندترین منابع برنامهنویسی سیستمی تبدیل کرده است.
Learn to write real Linux software—not just run it.
Most programmers never learn how Linux really works. Why? Because system programming is rarely taught, and the tools can be intimidating without the right guidance. As a result, many developers stick to high-level languages and frameworks—writing code that runs on Linux without understanding how it interacts with Linux.
In today’s world, that’s not enough to stand out. Especially as more companies turn to AI to write their software, the question becomes: How do you stay relevant in an AI-driven world? You learn how things really work.
If you’ve ever wondered how processes are created, how memory and files are managed, or how programs communicate in a Unix environment, System Programming in Linux will make it all make sense.
This is a hands-on guide to writing software that interfaces directly with the Linux operating system. You’ll go beyond shell commands and abstractions to understand what the kernel is doing—and how to leverage it through your own code. Rather than telling you how to solve each problem, Professor Stewart N. Weiss guides you through the process of discovering the solution yourself.
Start with the core concepts of Unix and Linux, then work your way up to advanced topics like process control, signals, interprocess communication, threading, and non-blocking I/O. Each chapter includes conceptual diagrams, annotated source code, and practical projects to help you immediately apply what you’ve learned.
You’ll explore topics such as:
At Hunter College, Professor Weiss built the course this book is based on, and he has helped thousands of students go from confusion to confidence in his over 40 years of teaching programming. His clear, conversational style; technical depth; and focus on real-world application make this one of the most approachable and powerful system programming books available.
Table of Contents
Chapter 1: Core Concepts
Chapter 2: Fundamentals of System Programming
Chapter 3: Time, Dates, and Locales
Chapter 4: Basic Concepts of File I/O
Chapter 5: File I/O and Login Accounting
Chapter 6: Overview of Filesystems and Files
Chapter 7: The Directory Hierarchy
Chapter 8: Introduction to Signals
Chapter 9: Timers and Sleep Functions
Chapter 10: Process Fundamentals
Chapter 11: Process Creation and Termination
Chapter 12: Introduction to Interprocess Communication
Chapter 13: Pipes and FIFOs
Chapter 14: Client-Server Applications and Daemons
Chapter 15: Introduction to Threads
Chapter 16: Thread Synchronization
Chapter 17: Alternative Methods of I/O
Chapter 18: Terminals and Terminal I/O
Chapter 19: Interactive Programming and the ncurses Library
Appendix A: Creating Libraries
Appendix B: Unicode and UTF-8
Appendix C: Date and Time Format Specifiers
About the Author
Stewart N. Weiss was a professor in the computer science department of Hunter College for 38 years and was also on the faculty of the Graduate Center of the City University of New York. He developed courses in Unix system programming, parallel computing, software testing, and open source software development. Weiss holds a PhD in computer science from the Courant Institute of Mathematical Science of New York University. He has been working with Unix and C since 1983 and is passionate about sharing his knowledge of Unix and Linux systems.









