select --- در انتظار تکمیل ورودی/خروجی¶
این ماژول دسترسی به توابع select() و poll() موجود در بیشتر سیستمعاملها، devpoll() موجود در Solaris و مشتقات آن، epoll() موجود در Linux 2.5+ و kqueue() موجود در بیشتر سیستمهای BSD را فراهم میکند. توجه داشته باشید که در Windows، فقط برای سوکتها کار میکند؛ در سایر سیستمعاملها، برای انواع دیگر پرونده نیز کار میکند (بهویژه در Unix، روی پایپها کار میکند). نمیتوان از آن برای پروندههای معمولی استفاده کرد تا تعیین شود که آیا یک پرونده از آخرین باری که خوانده شده است بزرگتر شده است یا خیر.
توجه
ماژول selectors امکان تسهیم I/O سطح بالا و کارآمد را فراهم میکند و بر پایه عناصر اولیه ماژول select ساخته شده است. به کاربران توصیه میشود بهجای آن از ماژول selectors استفاده کنند، مگر اینکه بخواهند کنترل دقیقی بر عناصر اولیه مورد استفاده در سطح سیستمعامل داشته باشند.
دسترسپذیری: not WASI.
این ماژول روی WebAssembly کار نمیکند یا در دسترس نیست. برای اطلاعات بیشتر سکوهای WebAssembly را ببینید.
این ماژول موارد زیر را تعریف میکند:
- select.devpoll()¶
یک شیء پایش (polling) برای
/dev/pollبرمیگرداند؛ برای متدهای پشتیبانیشده توسط اشیای devpoll، بخش اشیای پایش /dev/poll در زیر را ببینید.اشیاء
devpoll()به تعداد مجاز توصیفگرهای پرونده در زمان نمونهسازی وابستهاند. اگر برنامه شما این مقدار را کاهش دهد،devpoll()شکست خواهد خورد. اگر برنامه شما این مقدار را افزایش دهد،devpoll()ممکن است فهرست ناقصی از توصیفگرهای پرونده فعال را برگرداند.توصیفگر پرونده جدید غیرقابل ارثبری است.
اضافه شده در نسخهی 3.3.
تغییر یافته در نسخهی 3.4: توصیفگر پرونده جدید اکنون غیرقابلارثبری است.
دسترسپذیری: Solaris.
- select.epoll(sizehint=-1, flags=0)¶
یک شیء پایش لبهای (edge polling) را برمیگرداند، که میتوان از آن بهعنوان رابط تحریک لبهای (Edge Triggered) یا تحریک سطحی (Level Triggered) برای رویدادهای ورودی/خروجی استفاده کرد.
sizehint تعداد مورد انتظار رویدادهای ثبتشونده را به epoll اطلاع میدهد. این مقدار باید مثبت باشد، یا
-1باشد تا از مقدار پیشفرض استفاده شود. این مقدار فقط در سیستمهای قدیمیتری استفاده میشود کهepoll_create1()در آنها در دسترس نیست؛ در غیر این صورت هیچ اثری ندارد (هرچند مقدار آن همچنان بررسی میشود).flags منسوخ شده و بهطور کامل نادیده گرفته میشود. با این حال، در صورتی که ارائه شود، مقدار آن باید
0یاselect.EPOLL_CLOEXECباشد، در غیر این صورتOSErrorپرتاب میشود.برای متدهای پشتیبانیشده توسط اشیای epolling، بخش اشیای پایش (polling) با محرک لبه و سطح (epoll) در زیر را ببینید.
اشیای
epollاز پروتکل مدیریت زمینه پشتیبانی میکنند: هنگامی که در یک دستورwithاستفاده شوند، توصیفگر پرونده جدید بهطور خودکار در پایان بلوک بسته میشود.توصیفگر پرونده جدید غیرقابل ارثبری است.
تغییر یافته در نسخهی 3.3: پارامتر flags افزوده شد.
تغییر یافته در نسخهی 3.4: پشتیبانی از دستور
withاضافه شد. توصیفگر پرونده جدید اکنون غیرقابلارثبری است.منسوخ شده از نسخهی 3.4: پارامتر flags. اکنون از
select.EPOLL_CLOEXECبهصورت پیشفرض استفاده میشود. برای اینکه توصیفگر پرونده قابل ارثبردن شود، ازos.set_inheritable()استفاده کنید.دسترسپذیری: Linux >= 2.5.44.
- select.poll()¶
یک شیء پایش (polling object) برمیگرداند که از ثبت و لغو ثبت توصیفگرهای پرونده و سپس پایش آنها برای رویدادهای ورودی/خروجی پشتیبانی میکند؛ برای متدهای پشتیبانیشده توسط اشیای پایش، بخش اشیای پایش (polling) در زیر را ببینید.
دسترسپذیری: Unix.
- select.kqueue()¶
یک شیء صف هسته (kernel queue) برمیگرداند؛ برای متدهای پشتیبانیشده توسط اشیای kqueue، بخش اشیای Kqueue در زیر را ببینید.
توصیفگر پرونده جدید غیرقابل ارثبری است.
تغییر یافته در نسخهی 3.4: توصیفگر پرونده جدید اکنون غیرقابلارثبری است.
دسترسپذیری: BSD, macOS.
- select.kevent(ident, filter=KQ_FILTER_READ, flags=KQ_EV_ADD, fflags=0, data=0, udata=0)¶
یک شیء رویداد هسته برمیگرداند؛ برای متدهای پشتیبانیشده توسط اشیای kevent، بخش اشیای Kevent در زیر را ببینید.
دسترسپذیری: BSD, macOS.
- select.select(rlist, wlist, xlist, timeout=None)¶
این یک رابط ساده برای فراخوانی سیستمی
select()در یونیکس است. سه آرگومان نخست، پیمایشپذیرهایی از «اشیاء انتظارپذیر (waitable objects)» هستند: یا اعداد صحیحی که توصیفگرهای پرونده را نشان میدهند، یا اشیایی با یک متد بدون پارامتر به نامfileno()که چنین عدد صحیحی را برمیگرداند:rlist: تا آماده شدن برای خواندن منتظر بمانید
wlist: صبر کنید تا برای نوشتن آماده شود
xlist: منتظر یک «وضعیت استثنایی» باشید (برای آگاهی از اینکه سیستم شما چه چیزی را چنین وضعیتی میداند، به صفحه راهنما مراجعه کنید)
پیمایشپذیرهای خالی مجاز هستند، اما پذیرش ۳ پیمایشپذیر خالی به پلتفرم وابسته است. (شناخته شده است که روی Unix کار میکند، اما روی Windows کار نمیکند.) آرگومان اختیاری timeout، مهلت زمانی را بهصورت عدد ممیز شناور بر حسب ثانیه مشخص میکند. هرگاه آرگومان timeout حذف شود یا
Noneباشد، تابع مسدود میشود تا حداقل یک توصیفگر پرونده آماده شود. مقدار زمان توقف ۰، یک پایش (poll) را مشخص میکند و تابع هرگز مسدود نمیشود.مقدار بازگشتی، یک سهتایی از فهرستهایی از اشیای آماده است: زیرمجموعههایی از سه آرگومان نخست. هنگامی که مهلت زمانی بدون آماده شدن توصیفگر پروندهای به پایان برسد، سه فهرست خالی برگردانده میشود.
از میان انواع قابل قبول شیء در پیمایشپذیرها میتوان به اشیای پرونده پایتون (مثلاً
sys.stdin، یا اشیای برگرداندهشده توسطopen()یاos.popen()) و اشیای سوکت برگرداندهشده توسطsocket.socket()اشاره کرد. همچنین میتوانید خودتان یک کلاس پوششی <wrapper> تعریف کنید، به شرطی که متدfileno()مناسبی داشته باشد (که واقعاً یک توصیفگر پرونده را برمیگرداند، نه صرفاً یک عدد صحیح تصادفی).توجه
اشیای پرونده در ویندوز قابل قبول نیستند، اما سوکتها قابل قبول هستند. در ویندوز، تابع زیربنایی
select()توسط کتابخانه WinSock ارائه میشود و توصیفگرهای پروندهای را که از WinSock منشأ نگرفتهاند، مدیریت نمیکند.تغییر یافته در نسخهی 3.5: این تابع اکنون هنگامی که یک سیگنال آن را قطع کند، بهجای پرتاب
InterruptedError، با یک مهلت زمانی بازمحاسبهشده دوباره اجرا میشود، مگر اینکه هندلر سیگنال استثنایی پرتاب کند (برای دلیل آن، PEP 475 را ببینید).
- select.PIPE_BUF¶
حداقل تعداد بایتهایی که میتوان بدون مسدود شدن در یک پایپ نوشت، هنگامی که پایپ توسط
select()،poll()یا رابط دیگری در این ماژول بهعنوان آماده برای نوشتن گزارش شده باشد. این موضوع به انواع دیگر اشیاء شبهپرونده مانند سوکتها اعمال نمیشود.POSIX تضمین میکند که این مقدار حداقل ۵۱۲ باشد.
دسترسپذیری: Unix
اضافه شده در نسخهی 3.2.
اشیای پایش /dev/poll¶
سولاریس و مشتقات آن دارای /dev/poll هستند. در حالی که select() از مرتبهی O(بالاترین توصیفگر پرونده) و poll() از مرتبهی O(تعداد توصیفگرهای پرونده) است، /dev/poll از مرتبهی O(توصیفگرهای پرونده فعال) است.
رفتار /dev/poll بسیار نزدیک به شیء استاندارد poll() است.
- devpoll.close()¶
توصیفگر پرونده شیء پایش (polling) را ببندید.
اضافه شده در نسخهی 3.4.
- devpoll.closed¶
Trueاگر شیء پایش (polling) بسته باشد.اضافه شده در نسخهی 3.4.
- devpoll.fileno()¶
شماره توصیفگر پرونده شیء polling را برمیگرداند.
اضافه شده در نسخهی 3.4.
- devpoll.register(fd[, eventmask])¶
یک توصیفگر پرونده را در شیء پایش (polling) ثبت کنید. فراخوانیهای بعدی متد
poll()سپس بررسی میکنند که آیا توصیفگر پرونده رویدادهای ورودی/خروجی در انتظار دارد یا خیر. fd میتواند یک عدد صحیح باشد، یا شیءای با متدfileno()که یک عدد صحیح بازمیگرداند. اشیای پروندهfileno()را پیادهسازی میکنند، بنابراین میتوان از آنها نیز بهعنوان آرگومان استفاده کرد.eventmask یک نقاب بیتی اختیاری است که نوع رویدادهایی را که میخواهید بررسی کنید توصیف میکند. ثابتها همان ثابتهای مورد استفاده در شیء
poll()هستند. مقدار پیشفرض ترکیبی از ثابتهایPOLLIN،POLLPRIوPOLLOUTاست.هشدار
ثبت یک توصیفگر پرونده که از پیش ثبت شده است، خطا نیست، اما نتیجه تعریفنشده است. اقدام مناسب این است که ابتدا آن را از ثبت خارج کنید یا تغییر دهید. این یک تفاوت مهم در مقایسه با
poll()است.
- devpoll.modify(fd[, eventmask])¶
این متد یک
unregister()و به دنبال آن یکregister()انجام میدهد. این کار (کمی) کارآمدتر از انجام همان کار بهصورت صریح است.
- devpoll.unregister(fd)¶
یک توصیفگر پرونده را که توسط یک شیء پایش (polling) پیگیری میشود، حذف کنید. دقیقاً مانند متد
register()، fd میتواند یک عدد صحیح یا یک شیء با متدfileno()باشد که یک عدد صحیح برمیگرداند.تلاش برای حذف توصیفگر پروندهای که هرگز ثبت نشده است، بهطور ایمن نادیده گرفته میشود.
- devpoll.poll([timeout])¶
مجموعهای از توصیفگرهای پرونده ثبتشده را پایش میکند و فهرستی را برمیگرداند که ممکن است خالی باشد و شامل دوتاییهای
(fd, event)برای توصیفگرهایی است که رویدادها یا خطاها برای گزارش دارند. fd توصیفگر پرونده است و event یک نقاب بیتی است که بیتهای آن برای رویدادهای گزارششده برای آن توصیفگر تنظیم شدهاند ---POLLINبرای ورودی در انتظار،POLLOUTبرای نشان دادن اینکه توصیفگر قابل نوشتن است، و غیره. فهرست خالی نشان میدهد که زمان فراخوانی به پایان رسیده و هیچ توصیفگر پروندهای رویدادی برای گزارش نداشته است. اگر timeout داده شود، مدت زمانی را بر حسب میلیثانیه مشخص میکند که سیستم پیش از بازگشت برای رویدادها منتظر خواهد ماند. اگر timeout حذف شود، -1 باشد یاNoneباشد، فراخوانی تا زمانی که رویدادی برای این شیء پایش وجود داشته باشد، مسدود خواهد شد.تغییر یافته در نسخهی 3.5: این تابع اکنون هنگامی که یک سیگنال آن را قطع کند، بهجای پرتاب
InterruptedError، با یک مهلت زمانی بازمحاسبهشده دوباره اجرا میشود، مگر اینکه هندلر سیگنال استثنایی پرتاب کند (برای دلیل آن، PEP 475 را ببینید).
اشیای پایش (polling) با محرک لبه و سطح (epoll)¶
https://linux.die.net/man/4/epoll
eventmask یک نقاب بیتی (bit mask) است که از ثابتهای زیر استفاده میکند:
ثابت
معنی
EPOLLINبرای خواندن در دسترس است.
EPOLLOUTبرای نوشتن در دسترس است.
EPOLLPRIداده فوری برای خواندن.
EPOLLERRوضعیت خطا در fd مرتبط رخ داد.
EPOLLHUPقطع ارتباط (Hang up) برای fd مرتبط رخ داد.
EPOLLETرفتار تحریک لبهای (Edge Trigger) را تنظیم میکند؛ پیشفرض، رفتار تحریک سطحی (Level Trigger) است.
EPOLLONESHOTرفتار یکبار اجرا (one-shot) را تنظیم میکند. پس از دریافت یک رویداد، fd بهصورت داخلی غیرفعال میشود.
EPOLLEXCLUSIVEفقط یک شیء epoll را هنگامی که fd مرتبط رویدادی دارد، بیدار میکند. حالت پیشفرض (اگر این پرچم تنظیمنشده باشد) این است که تمام اشیاء epoll که یک fd را پایش میکنند، بیدار شوند.
EPOLLRDHUPهمتا در سوکت جریانی (stream socket) اتصال را بست یا نیمهی نوشتاری اتصال را خاموش کرد.
EPOLLRDNORMمعادل با
EPOLLIN
EPOLLRDBANDباند داده اولویت قابل خواندن است.
EPOLLWRNORMمعادل
EPOLLOUT.
EPOLLWRBANDممکن است دادههای اولویتدار نوشته شوند.
EPOLLMSGنادیده گرفته میشود.
EPOLLWAKEUPاز متوقف شدن در حین انتظار برای رویداد جلوگیری میکند.
اضافه شده در نسخهی 3.6:
EPOLLEXCLUSIVEافزوده شد. این ثابت فقط توسط هسته لینوکس 4.5 یا نسخههای بعدی پشتیبانی میشود.اضافه شده در نسخهی 3.14:
EPOLLWAKEUPاضافه شد. این مورد فقط در هسته لینوکس 3.5 یا نسخههای بعدی پشتیبانی میشود.
- epoll.close()¶
توصیفگر پرونده کنترلی شیء epoll را ببندید.
- epoll.closed¶
اگر شیء epoll بستهشده باشد،
Trueاست.
- epoll.fileno()¶
شماره توصیفگر فایلِ fd کنترلی را برمیگرداند.
- epoll.fromfd(fd)¶
ایجاد یک شیء epoll از یک توصیفگر پرونده دادهشده.
- epoll.register(fd[, eventmask])¶
یک توصیفگر پرونده fd را در شیء epoll ثبت کنید.
- epoll.modify(fd, eventmask)¶
تغییر یک توصیفگر پرونده ثبتشده fd.
- epoll.unregister(fd)¶
یک توصیفگر پرونده ثبتشده را از شیء epoll حذف کنید.
تغییر یافته در نسخهی 3.9: این متد دیگر خطای
EBADFرا نادیده نمیگیرد.
- epoll.poll(timeout=None, maxevents=-1)¶
منتظر رویدادها بمانید. timeout به ثانیه (float)
تغییر یافته در نسخهی 3.5: این تابع اکنون هنگامی که یک سیگنال آن را قطع کند، بهجای پرتاب
InterruptedError، با یک مهلت زمانی بازمحاسبهشده دوباره اجرا میشود، مگر اینکه هندلر سیگنال استثنایی پرتاب کند (برای دلیل آن، PEP 475 را ببینید).
اشیای پایش (polling)¶
فراخوانی سیستمی poll()، که در اکثر سیستمهای یونیکس پشتیبانی میشود، مقیاسپذیری بهتری را برای سرورهای شبکهای فراهم میکند که به تعداد بسیار زیادی کلاینت بهطور همزمان خدمات میدهند. poll() مقیاسپذیرتر است، زیرا این فراخوانی سیستمی فقط به فهرست کردن توصیفگرهای پرونده مورد نظر نیاز دارد، در حالی که select() یک بیتمپ میسازد، بیتهای مربوط به توصیفگرهای پرونده مورد نظر را روشن میکند، و سپس بعد از آن، کل بیتمپ باید دوباره بهصورت سطری پیمایش شود. select() O(بالاترین توصیفگر پرونده) است، در حالی که poll() O(تعداد توصیفگرهای پرونده) است.
- poll.register(fd[, eventmask])¶
یک توصیفگر پرونده را در شیء پایش (polling) ثبت کنید. فراخوانیهای بعدی متد
poll()سپس بررسی میکنند که آیا توصیفگر پرونده رویدادهای ورودی/خروجی در انتظار دارد یا خیر. fd میتواند یک عدد صحیح باشد، یا شیءای با متدfileno()که یک عدد صحیح بازمیگرداند. اشیای پروندهfileno()را پیادهسازی میکنند، بنابراین میتوان از آنها نیز بهعنوان آرگومان استفاده کرد.eventmask یک نقاب بیتی اختیاری است که نوع رویدادهایی را که میخواهید بررسی کنید توصیف میکند، و میتواند ترکیبی از ثابتهای
POLLIN،POLLPRIوPOLLOUTباشد که در جدول زیر توضیح داده شدهاند. اگر مشخص نشود، مقدار پیشفرض استفادهشده هر ۳ نوع رویداد را بررسی میکند.ثابت
معنی
POLLINدادهای برای خواندن وجود دارد.
POLLPRIدادهای فوری برای خواندن وجود دارد.
POLLOUTآماده برای خروجی: نوشتن مسدود نخواهد شد.
POLLERRنوعی وضعیت خطا.
POLLHUPقطع شد.
POLLRDHUPهمتای سوکت جریانی اتصال را بست، یا نیمهی نوشتاری اتصال را خاموش کرد.
POLLNVALدرخواست نامعتبر: توصیفگر باز نیست.
ثبت یک توصیفگر پرونده که پیشتر ثبت شده است، خطا نیست و همان اثری را دارد که توصیفگر دقیقاً یک بار ثبت شده باشد.
- poll.modify(fd, eventmask)¶
یک توصیفگر پرونده (fd) از پیش ثبتشده را تغییر میدهد. این کار همان اثر
register(fd, eventmask)را دارد. تلاش برای تغییر توصیفگر پروندهای که هرگز ثبتنشده است، باعث پرتاب یک استثنایOSErrorبا errno برابرENOENTمیشود.
- poll.unregister(fd)¶
یک توصیفگر پرونده را که توسط یک شیء پایش (polling) پیگیری میشود، حذف کنید. دقیقاً مانند متد
register()، fd میتواند یک عدد صحیح یا یک شیء با متدfileno()باشد که یک عدد صحیح برمیگرداند.تلاش برای حذف توصیفگر پروندهای که هرگز ثبت نشده است، باعث پرتاب استثنای
KeyErrorمیشود.
- poll.poll([timeout])¶
از مجموعه توصیفگرهای پرونده ثبتشده پایش میکند و فهرستی را برمیگرداند که ممکن است خالی باشد و شامل ۲-تاییهای
(fd, event)برای توصیفگرهایی است که رویدادها یا خطاهایی برای گزارش دارند. fd توصیفگر پرونده است، و event یک نقاب بیتی است که بیتهایی در آن برای رویدادهای گزارششده برای آن توصیفگر تنظیم شدهاند ---POLLINبرای ورودی در انتظار،POLLOUTبرای نشان دادن اینکه توصیفگر قابل نوشتن است، و غیره. یک فهرست خالی نشان میدهد که مهلت فراخوانی به پایان رسیده است و هیچ توصیفگر پروندهای رویدادی برای گزارش نداشته است. اگر timeout داده شده باشد، مدت زمانی را بر حسب میلیثانیه مشخص میکند که سیستم برای رویدادها پیش از بازگشت منتظر خواهد ماند. اگر timeout داده نشده باشد، منفی باشد، یاNoneباشد، فراخوانی تا زمانی که رویدادی برای این شیء پایش وجود داشته باشد، مسدود خواهد شد.تغییر یافته در نسخهی 3.5: این تابع اکنون هنگامی که یک سیگنال آن را قطع کند، بهجای پرتاب
InterruptedError، با یک مهلت زمانی بازمحاسبهشده دوباره اجرا میشود، مگر اینکه هندلر سیگنال استثنایی پرتاب کند (برای دلیل آن، PEP 475 را ببینید).
اشیای Kqueue¶
- kqueue.close()¶
توصیفگر پرونده کنترلی شیء kqueue را ببندید.
- kqueue.closed¶
اگر شیء kqueue بسته باشد،
Trueاست.
- kqueue.fileno()¶
شماره توصیفگر فایلِ fd کنترلی را برمیگرداند.
- kqueue.fromfd(fd)¶
یک شیء kqueue از یک توصیفگر پروندهی دادهشده ایجاد کنید.
- kqueue.control(changelist, max_events[, timeout]) eventlist¶
رابط سطح پایین برای kevent
changelist باید یک پیمایشپذیر از شیءهای kevent باشد یا
Nonemax_events باید ۰ یا یک عدد صحیح مثبت باشد
مهلت زمانی به ثانیه (امکان استفاده از مقادیر اعشاری وجود دارد)؛ پیشفرض
Noneاست، تا برای همیشه منتظر بماند
تغییر یافته در نسخهی 3.5: این تابع اکنون هنگامی که یک سیگنال آن را قطع کند، بهجای پرتاب
InterruptedError، با یک مهلت زمانی بازمحاسبهشده دوباره اجرا میشود، مگر اینکه هندلر سیگنال استثنایی پرتاب کند (برای دلیل آن، PEP 475 را ببینید).
اشیای Kevent¶
https://man.freebsd.org/cgi/man.cgi?query=kqueue&sektion=2
- kevent.ident¶
مقداری که برای شناسایی رویداد استفاده میشود. تفسیر آن به فیلتر بستگی دارد، اما این مقدار معمولاً توصیفگر پرونده است. در سازنده، ident میتواند یک int یا یک شیء با متد
fileno()باشد. kevent عدد صحیح را بهصورت داخلی ذخیره میکند.
- kevent.filter¶
نام فیلتر هسته.
ثابت
معنی
KQ_FILTER_READیک توصیفگر میگیرد و هر زمان که دادهای برای خواندن موجود باشد، بازمیگردد.
KQ_FILTER_WRITEیک توصیفگر میگیرد و هر زمان که دادهای برای نوشتن در دسترس باشد، برمیگردد.
KQ_FILTER_AIOدرخواستهای AIO.
KQ_FILTER_VNODEهنگامی که یک یا چند مورد از رویدادهای درخواستی پایششده در fflag رخ دهد، برمیگردد.
KQ_FILTER_PROCرویدادهای مربوط به یک شناسه فرایند را زیر نظر بگیرید.
KQ_FILTER_NETDEVرویدادهای یک دستگاه شبکه را زیر نظر بگیرید (در macOS در دسترس نیست).
KQ_FILTER_SIGNALهر زمان که سیگنال تحت نظر به فرایند تحویل داده شود، بازگشت میکند.
KQ_FILTER_TIMERیک زمانسنج دلخواه برقرار میکند.
- kevent.flags¶
عملیات فیلتر.
ثابت
معنی
KQ_EV_ADDیک رویداد را اضافه یا اصلاح میکند.
KQ_EV_DELETEیک رویداد را از صف حذف میکند.
KQ_EV_ENABLEبه control() اجازه میدهد رویداد را برگرداند.
KQ_EV_DISABLEرویداد را غیرفعال میکند.
KQ_EV_ONESHOTرویداد را پس از اولین رخداد حذف میکند.
KQ_EV_CLEARپس از بازیابی یک رویداد، وضعیت را بازنشانی کنید.
KQ_EV_SYSFLAGSرویداد داخلی.
KQ_EV_FLAG1رویداد داخلی.
KQ_EV_EOFشرط EOF مختص به فیلتر.
KQ_EV_ERRORمقادیر بازگشتی را ببینید.
- kevent.fflags¶
پرچمهای مختص فیلتر.
پرچمهای فیلتر برای
KQ_FILTER_READوKQ_FILTER_WRITE:ثابت
معنی
KQ_NOTE_LOWATآستانه پایین بافر سوکت.
KQ_FILTER_VNODEپرچمهای فیلتر:ثابت
معنی
KQ_NOTE_DELETEunlink() فراخوانی شد.
KQ_NOTE_WRITEیک نوشتن رخ داد.
KQ_NOTE_EXTENDپرونده توسعه یافت.
KQ_NOTE_ATTRIBیک ویژگی تغییر کرد.
KQ_NOTE_LINKتعداد پیوندها تغییر کرده است.
KQ_NOTE_RENAMEپرونده تغییر نام داده شد.
KQ_NOTE_REVOKEدسترسی به پرونده لغو شد.
KQ_FILTER_PROCپرچمهای فیلتر:ثابت
معنی
KQ_NOTE_EXITفرایند خارج شده است.
KQ_NOTE_FORKفرایند fork() را فراخوانی کرده است.
KQ_NOTE_EXECفرایند، یک فرایند جدید را اجرا کرده است.
KQ_NOTE_PCTRLMASKپرچم فیلتر داخلی.
KQ_NOTE_PDATAMASKپرچم فیلتر داخلی.
KQ_NOTE_TRACKیک فرایند را در طول fork() پیگیری کنید.
KQ_NOTE_CHILDبرای NOTE_TRACK در فرایند فرزند بازگردانده میشود.
KQ_NOTE_TRACKERRامکان اتصال به یک فرزند وجود ندارد.
پرچمهای فیلتر
KQ_FILTER_NETDEV(در macOS در دسترس نیست):ثابت
معنی
KQ_NOTE_LINKUPپیوند برقرار است.
KQ_NOTE_LINKDOWNپیوند قطع است.
KQ_NOTE_LINKINVوضعیت پیوند نامعتبر است.
- kevent.data¶
دادههای مخصوص فیلتر.
- kevent.udata¶
مقدار تعریفشده توسط کاربر.