کتاب کلاسیک برای زبان سی، کتاب The C Programming Language نوشتهٔ کرنیگان و ریچی، چاپ انتشارات Addison-Wesley هستش. خوبی این کتاب این هست که بسیار جمعجور و سرراست هستش و خواننده رو درگیر مفاهیمی که دههای یک بار ممکنه نیاز بشن نمیکنه. ضربالمثل معروفی هست که میگه کسی که به زبان سی برنامهنویسی میکنه، باید این کتاب رو بخره.
اگر سی را برای محیط یونیکس میخواهید، کتابهای ریچارد استیونز رو هم باید تهیه کنید. کتابهای ایشان برای یک برنامهنویس یونیکس، اوجب واجبات هست. من پیشنهاد میکنم بعد از یادگیری سی، کتاب «برنامهنویسی پیشرفته در محیط یونیکس» نوشتهٔ استیونز و راگو، چاپ ۲۰۱۳ رو مطالعه کنید. این کتاب فرایندها، ریسهها، سیگنالها، ترمینالها، ورودی/خروجی، ارتباطات بین فرایندی و مفاهیم دیگه رو در چهار سیستمعامل لینوکس، فریبیاسدی، سولاریس، و مک اواس توضیح میده. بعد از اون، احتمالا آمادهٔ مطالعه کتاب دیگر استیونز «برنامهنویسی شبکه در یونیکس» هستید. این کتاب دو جلد هست که جلد اول رابط سوکتهای برکلی رو به طور مفصل توضیح داده و جلد دوم هم به ارتباطات بین فرایندی اختصاص داده شده. کتابهای استیونز رسم و رسومات رایج در برنامهنویسی یونیکس و راهحلهایی برای مسائل و مشکلات رایج (شرایط رقابتی، مدیریت حافظه، مسائل امنیتی و این چیزهای سردردآور) رو به شما آموزش میده. یک کتاب دیگر که هر برنامهنویس یونیکس باید بخواند، Programmers guide to ncurses نوشته Dan Gookin چاپ ۲۰۰۷ هست. همهٔ این کتابها تمرینها و مسائلی دارند که با حل اونها میتونید مهارت خودتون رو بالا ببرید. همینکه وارد دنیای واقعی برنامهنویسی شدید، خواهید فهمید که این تازه شروع کار هست و هنوز کتابخانههای اساسی بسیاری وجود دارند که بدون اونها نوشتن خیلی از برنامهها ممکن نیست و باید اونها رو هم یاد بگیرید، از جمله OpenSSL, Bison & Flex, Libevent, PCRE, zlib و البته چیزهایی مثل gdb یا کار با Makefileها رو.