.ds EP \fIGAWK: Effective AWK Programming\fP .ds PM \fIPersistent Memory gawk User Manual\fP .TH PM-GAWK 1 "2025-06-01" "Free Software Foundation" "دستورات کاربر" .SH "نام (NAME)" pm-gawk \- حافظه پایدار برای دادهها و توابع gawk .SH "خلاصه دستور (SYNOPSIS)" .ft CW .nf truncate -s \f(CIsize\fP heap.pma export GAWK_PERSIST_FILE=heap.pma gawk .\^.\^. .sp truncate -s \f(CIsize\fP heap.pma GAWK_PERSIST_FILE=heap.pma gawk .\^.\^. .sp truncate -s \f(CIsize\fP heap.pma alias pm='GAWK_PERSIST_FILE=heap.pma' pm gawk .\^.\^. # مختصر .sp unset GAWK_PERSIST_FILE # غیرفعال کردن پایداری .sp export GAWK_PERSIST_FILE=other_heap.pma # تغییر فایل هیپ .sp rm heap.pma # حذف فایل هیپ .fi .ft R .SH "توضیحات (DESCRIPTION)" دستور .I gawk نسخه 5.2 و بالاتر از قابلیت حافظه پایدار پشتیبانی می‌کند که می‌تواند متغیرها و توابع تعریف‌شده در اسکریپت را برای استفاده‌های بعدی در یک فایل ذخیره کند. این ویژگی که .IR pm-gawk نامیده می‌شود، در \*(EP و در \*(PM شرح داده شده است. .PP ویژگی .I pm-gawk با فرستادن نام یک .IR "فایل هیپ" که در ابتدا خالی است (تمام بایت‌های آن صفر است) از طریق متغیر محیطی \f(CWGAWK_PERSIST_FILE\fP به .I gawk فعال می‌شود. .I pm-gawk متغیرها و توابع تعریف‌شده توسط اسکریپت را برای استفاده در اجراهای بعدی .I gawk در فایل هیپ نگه‌داری می‌کند. .PP ویژگی .I pm-gawk حداقل دو مزیت در مقایسه با افزونه موجود \f(CWrwarray\fP دارد: امکان دسترسی در زمان ثابت (\(lqزمان O(1)\(rq) به عناصر مجزای آرایه‌های انجمنی پایدار را فراهم می‌سازد، و علاوه بر متغیرها می‌تواند توابع تعریف‌شده توسط اسکریپت را نیز ذخیره کند. .SH "نحوه کار (HOW IT WORKS)" نمایش متغیرهای پایدار: .sp .5 .RS .nf .ft CW $ \f(CBtruncate -s 1G heap.pma\fP # ایجاد فایل هیپ $ \f(CBexport GAWK_PERSIST_FILE=heap.pma\fP # متغیر محیطی عمومی $ \f(CBgawk 'BEGIN { print ++i }'\fP 1 $ \f(CBgawk 'BEGIN { print ++i }'\fP 2 $ \f(CBgawk 'BEGIN { print ++i }'\fP 3 .ft R .fi .RE .PP برای فرستادن متغیر محیطی بر اساس هر دستور به طور مجزا: .sp .5 .RS .nf .ft CW $ \f(CBunset GAWK_PERSIST_FILE\fP $ \f(CBGAWK_PERSIST_FILE=heap.pma gawk 'BEGIN { print ++i }'\fP 4 $ \f(CBGAWK_PERSIST_FILE=heap.pma gawk 'BEGIN { print ++i }'\fP 5 $ \f(CBGAWK_PERSIST_FILE=heap.pma gawk 'BEGIN { print ++i }'\fP 6 .ft R .fi .RE .PP برای کاهش شلوغی بصریِ فرستادن متغیر محیطی در هر دستور: .sp .5 .RS .nf .ft CW $ \f(CBalias pm='GAWK_PERSIST_FILE=heap.pma'\fP $ \f(CBpm gawk 'BEGIN { print ++i }'\fP 7 $ \f(CBpm gawk 'BEGIN { print ++i }'\fP 8 .ft R .fi .RE .PP برای خودداری از فعال‌سازی پایداری: .sp .5 .RS .nf .ft CW $ \f(CBunset GAWK_PERSIST_FILE\fP $ \f(CBgawk 'BEGIN { print ++i }'\fP 1 $ \f(CBgawk 'BEGIN { print ++i }'\fP 1 .ft R .fi .RE .PP برای فراموش کردن و پاک کردن همیشگی محتوای فایل هیپ: .sp .5 .RS .nf .ft CW $ \f(CBrm heap.pma\fP .ft R .fi .RE .SH "متغیرهای محیطی (ENVIRONMENT VARIABLES)" متغیر محیطی \f(CWGAWK_PERSIST_FILE\fP حاوی نام یک فایل هیپ است که متغیرها و توابع تعریف‌شده توسط اسکریپت در آن ذخیره می‌شوند. اگر این متغیر محیطی برای .I gawk قابل مشاهده نباشد، قابلیت پایداری فعال نمی‌شود و .I gawk به روش سنتی و پیشین خود رفتار می‌کند. .SH "اطلاعات نسخه (VERSION INFORMATION)" حافظه پایدار .I gawk نخستین بار در .I gawk نسخه 5.2 ارائه شد. .SH "نویسندگان (AUTHORS)" آرنولد رابینز (Arnold Robbins)، نگه‌دارنده .IR gawk ، ویژگی .I pm-gawk را با استفاده از یک تخصیص‌دهنده حافظه پایدار (pma) که توسط ترنس کلی (Terence Kelly) ارائه شده بود، پیاده‌سازی کرد. یک پیش‌نمونه اثبات مفهوم اولیه از .I gawk پایدار پیش‌تر توسط Haris Volos، Zi Fan Tan و Jianan Li با استفاده از انشعابی از کدهای منبع رسمی .I gawk توسعه یافته بود. .SH "محدودیتها (LIMITATIONS)" شناخته شده است که سیستم‌فایل CIFS گنو/لینوکس موجب بروز مشکلاتی برای تخصیص‌دهنده حافظه پایدار می‌شود. از فایلی روی چنین سیستم‌فایلی همراه با .IR pm-gawk استفاده نکنید. .PP در صورتی که نسخه فعلی .I gawk با نسخه‌ای که نخستین بار با یک فایل ذخیره‌سازی پشتیبان مشخص استفاده شده بود مطابقت نداشته باشد، .I pm-gawk یک پیام هشدار تولید می‌کند. .SH "گزارش باگها (BUGS)" دستورالعمل‌های موجود در \*(EP و \*(PM را دنبال کنید. برای اشکالات احتمالی مربوط به پایداری (در مقابل سایر باگ‌های .I gawk که به پایداری مربوط نیستند)، لطفاً یک رایانامه به یک یا چند نشانی زیر برای Terence Kelly ارسال نمایید: .PP .nf \f(CWtpkelly@acm.org\fP \f(CWtpkelly@eecs.umich.edu\fP \f(CWtpkelly@cs.princeton.edu\fP .fi .SH "همچنین ببینید (SEE ALSO)" .BR gawk (1)، \*(EP، و \*(PM. در صورتی که سامانه Info روی سیستم شما نصب باشد، هر دو کتابچه راهنما باید در آن در دسترس باشند. .PP برای آخرین کدهای منبع و راهنما پیوند زیر را ببینید: .PP .nf .fi .SH "حق تکثیر و مجوزها (COPYING PERMISSIONS)" حق نشر \(co 2022 متعلق به Terence Kelly است. .PP اجازه داده می‌شود که نسخه‌های عین به عین از این صفحه راهنما تهیه و توزیع شوند، به شرطی که اعلامیه حق نشر و این اعلامیه مجوز در تمامی نسخه‌ها حفظ شوند. .PP اجازه داده می‌شود نسخه‌های اصلاح‌شده این صفحه راهنما تحت شرایط نسخه‌های عین به عین کپی و توزیع شوند، به شرطی که کل کار حاصل تحت شرایط اعلامیه مجوزی دقیقاً یکسان با این اعلامیه توزیع شود. .PP اجازه داده می‌شود ترجمه‌های این صفحه راهنما به زبان‌های دیگر، تحت شرایط فوق برای نسخه‌های اصلاح‌شده کپی و توزیع شوند، به جز این‌که این اعلامیه مجوز می‌تواند به ترجمه‌ای که مورد تأیید بنیاد قرار گرفته بیان شود.