**برنامه‌نویسی پیشرفته در محیط یونیکس** (به انگلیسی: Advanced Programming in the Unix Environment) کتابی است دربارهٔ برنامه‌نویسی رایانه که توسط ریچارد استیونز نوشته شده‌است. این کتاب به تشریح رابط‌های برنامه‌نویسی نرم‌افزار موجود در سیستم‌عامل‌های خانواده یونیکس می‌پردازد و نحوه نوشتن برنامه‌های کاربردی در یونیکس را با استفاده از زبان برنامه‌نویسی سی نشان می‌دهد. اولین ویرایش کتاب در سال ۱۹۹۲ توسط انتشارات ادیسون-وزلی به چاپ رسید. این کتاب برنامه‌نویسی برای دو خانواده اصلی و محبوب سیستم‌عامل یونیکس، خانواده بی‌اس‌دی (بویژه ۴٫۳بی‌اس‌دی و ۳۸۶بی‌اس‌دی) و همینطور خانواده یونیکس سیستم ۵ (SVR4) را تشریح می‌کند. کتاب به تشریح فراخوان‌های سیستمی که بر روی یک توصیف‌گر پرونده عمل می‌کنند، فراخوان‌های سیستمی خاصی که بر روی خود توصیف‌گرهای پرونده عمل می‌کنند مانند ioctl و عملیات‌های مختلف بر روی فایل‌ها و دایرکتوری‌ها می‌پردازد. کتاب همچنین بخش ورودی/خروجی استاندارد در کتابخانه استاندارد سی و دیگر قسمت‌های مورد نیاز را هم پوشش می‌دهد. چند فصل از کتاب هم به بررسی فراخوان‌های سیستمی برای کنترل فرایندها، گروه‌های فرایند، دیمن‌ها، ارتباطات بین فرایندی و سیگنال‌ها اختصاص داده شده‌است. یک فصل از کتاب هم به نحوه کنترل کردن ترمینال‌ها اختصاص داده شده و فصلی دیگر هم مفاهیم انواع مختلف ترمینال‌های مجازی و کتاب‌خانه‌هایی نظیر ترم‌کپ و ان‌کرسز را تشریح می‌کند. استیونز سه فصل دیگر هم برای ارائه کردن تعدادی مثال واقعی در کتاب گنجانده است. در یک فصل یک رابط پایگاه داده پیاده‌سازی می‌کند، در فصلی دیگر با یک چاپگر PostScript ارتباط برقرار می‌کند و در فصل دیگری هم نحوهٔ ارتباط با مودم را نشان می‌دهد. ویرایش اول این کتاب برنامه‌نویسی شبکه را پوشش نمی‌دهد، چرا که این مبحث در کتاب دیگر استیونز، *برنامه‌نویسی شبکه در یونیکس* و کتاب سه جلدی *TCP/IP مصور* مورد پوشش قرار گرفته‌است.

استیونز، نویسنده کتاب، در سال ۱۹۹۹ درگذشت و ویرایش دوم کتاب ناتمام ماند، با گسترش محبوبیت و تنوع فنی مشتقات یونیکس و سیستم‌های تقریباً سازگار با آن نظیر لینوکس، کدهای موجود در کتاب بیش از پیش منسوخ و کهنه شدند. استیفن راگو با استفاده از یادداشت‌های ناتمام استیونز، ویرایش دوم کتاب را به اتمام رساند که در سال ۲۰۰۵ توسط انتشارات ادیسون-وزلی منتشر گشت؛ در این ویرایش، پشتیبانی از محیط‌هایی نظیر فری‌بی‌اس‌دی، لینوکس، سولاریس، اپل داروین به کتاب اضافه گشت. فصل ارتباط با مودم هم از کتاب حذف شد، اما در وب‌سایت کتاب در دسترس قرار گرفت. همچنین ویرایش دوم کتاب مباحثی نظیر برنامه‌نویسی چندریسه‌ای (به انگلیسی: multithreaded programming) با استفاده از ریسه‌های پازیکس را هم تحت پوشش قرار می‌دهد و بحث سوکت‌های شبکه هم در این ویرایش به کتاب اضافه شد. دنیس ریچی پیش‌گفتاری برای ویرایش دوم کتاب نوشته است و همچنین اسکات آدامز هم کامیک اسریپ دیلبرت با مضمونی راجع به یونیکس را برای کتاب طراحی کرده‌است.

این کتاب به خاطر جامع بودن، کیفیت خوب و سازماندهی ماهرانه به گستردگی مورد ستایش قرار گرفته‌است. کتاب در یک بررسی توسط لینوکس ژورنال، عنوان «توصیه قلبی» را دریافت کرد. اواس‌نیوز هم در بررسی ویرایش دوم کتاب، آن را «یکی از بهترین کتاب‌های فنی که تا به حال منتشر شده» توصیف کرده‌است.

در سال ۲۰۱۳ هم ویرایش سوم این کتاب توسط استیفن راگو منتشر شد. در این ویرایش رابط‌های منسوخ‌شدهٔ STREAMS از کتاب حذف شدند، در عوض مباحث جدیدی مانند ورودی/خروجی ناهمگام، سمافورهای پازیکس، spin locksها و barrierها به کتاب اضافه شدند.

ویرایش‌ها
---------

* *Advanced Programming in the UNIX environment*, first edition, W. Richard Stevens, Addison-Wesley, 1992, ISBN 0-201-56317-7
* *Advanced Programming in the UNIX environment*, second edition, W. Richard Stevens and Stephen A. Rago, Addison-Wesley, 2005, ISBN 0-201-43307-9
* *Advanced Programming in the UNIX environment*, third edition, W. Richard Stevens and Stephen A. Rago, Addison-Wesley, 2013, ISBN 0-321-63773-9

منابع
-----

1. ↑  Bausum, David (October 1, 1997). "Advanced Programming in the Unix Environment". *Linux Journal* (42): 41–42.
2. ↑  Loli-Queru, Eugenia (October 4, 2005). "Book Review: Advanced Programming in the UNIX Environment". *OSNews*. Retrieved 16 June 2011.

پیوند به بیرون
--------------

* *Advanced Programming in the Unix Environment* home page
* Interview with 2nd. edition co-author Steven Rago, Ibrahim Haddad, *Linux Planet*, July 5, 2005
* Advanced UNIX Programming: An Interview with Stephen Rago
* Advanced Programming in the UNIX Env, 2nd Ed.
* REVIEW: Advanced Programming in the UNIX® Environment