select --- در انتظار تکمیل ورودی/خروجی¶
این ماژول دسترسی به توابع select() و poll() موجود در بیشتر سیستمعاملها، devpoll() موجود در Solaris و مشتقات آن، epoll() موجود در Linux 2.5+ و kqueue() موجود در بیشتر سیستمهای BSD را فراهم میکند. توجه داشته باشید که در Windows، فقط برای سوکتها کار میکند؛ در سایر سیستمعاملها، برای انواع دیگر پرونده نیز کار میکند (بهویژه در Unix، روی پایپها کار میکند). نمیتوان از آن برای پروندههای معمولی استفاده کرد تا تعیین شود که آیا یک پرونده از آخرین باری که خوانده شده است بزرگتر شده است یا خیر.
نکته
ماژول selectors امکان تسهیم I/O سطح بالا و کارآمد را فراهم میکند و بر پایه عناصر اولیه ماژول select ساخته شده است. به کاربران توصیه میشود بهجای آن از ماژول selectors استفاده کنند، مگر اینکه بخواهند کنترل دقیقی بر عناصر اولیه مورد استفاده در سطح سیستمعامل داشته باشند.
این ماژول موارد زیر را تعریف میکند:
-
exception select.error¶
نام مستعار منسوخ OSError.
-
select.devpoll()¶
یک شیء پایش (polling) برای /dev/poll برمیگرداند؛ برای متدهای پشتیبانیشده توسط اشیای devpoll، بخش اشیای پایش /dev/poll در زیر را ببینید.
اشیاء devpoll() به تعداد مجاز توصیفگرهای پرونده در زمان نمونهسازی وابستهاند. اگر برنامه شما این مقدار را کاهش دهد، devpoll() شکست خواهد خورد. اگر برنامه شما این مقدار را افزایش دهد، devpoll() ممکن است فهرست ناقصی از توصیفگرهای پرونده فعال را برگرداند.
توصیفگر پرونده جدید غیرقابل ارثبری است.
تغییر یافته در نسخهی 3.4: توصیفگر پرونده جدید اکنون غیرقابلارثبری است.
-
select.epoll(sizehint=-1, flags=0)¶
یک شیء پایش لبهای (edge polling) را برمیگرداند، که میتوان از آن بهعنوان رابط تحریک لبهای (Edge Triggered) یا تحریک سطحی (Level Triggered) برای رویدادهای ورودی/خروجی استفاده کرد.
پارامتر sizehint اپول (epoll) را از تعداد رویدادهای مورد انتظار برای ثبت مطلع میکند. این پارامتر باید مثبت باشد، یا برای استفاده از مقدار پیشفرض برابر با -1 باشد. این پارامتر فقط در سیستمهای قدیمیتر که epoll_create1(2) در آنها موجود نیست استفاده میشود؛ در غیر این صورت هیچ تأثیری ندارد (اگرچه مقدار آن همچنان بررسی میشود).
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() استفاده کنید.
تغییر یافته در نسخهی 3.15: هنگامی که سیپایتون ساخته میشود، این تابع ممکن است با استفاده از --disable-epoll غیرفعال شود.
-
select.poll()¶
یک شیء پایش (polling object) برمیگرداند که از ثبت و لغو ثبت توصیفگرهای پرونده و سپس پایش آنها برای رویدادهای ورودی/خروجی پشتیبانی میکند؛ برای متدهای پشتیبانیشده توسط اشیای پایش، بخش اشیای پایش (polling) در زیر را ببینید.
-
select.kqueue()¶
یک شیء صف هسته (kernel queue) برمیگرداند؛ برای متدهای پشتیبانیشده توسط اشیای kqueue، بخش اشیای Kqueue در زیر را ببینید.
توصیفگر پرونده جدید غیرقابل ارثبری است.
تغییر یافته در نسخهی 3.4: توصیفگر پرونده جدید اکنون غیرقابلارثبری است.
-
select.kevent(ident, filter=KQ_FILTER_READ, flags=KQ_EV_ADD, fflags=0, data=0, udata=0)¶
یک شیء رویداد هسته برمیگرداند؛ برای متدهای پشتیبانیشده توسط اشیای kevent، بخش اشیای Kevent در زیر را ببینید.
-
select.select(rlist, wlist, xlist, timeout=None)¶
این یک رابط ساده برای فراخوانی سیستمی select() در یونیکس است. سه آرگومان نخست، پیمایشپذیرهایی از «اشیاء انتظارپذیر (waitable objects)» هستند: یا اعداد صحیحی که توصیفگرهای پرونده را نشان میدهند، یا اشیایی با یک متد بدون پارامتر به نام fileno() که چنین عدد صحیحی را برمیگرداند:
rlist: تا آماده شدن برای خواندن منتظر بمانید
wlist: صبر کنید تا برای نوشتن آماده شود
xlist: منتظر یک «وضعیت استثنایی» باشید (برای آگاهی از اینکه سیستم شما چه چیزی را چنین وضعیتی میداند، به صفحه راهنما مراجعه کنید)
دادههای پیمایشپذیر خالی مجاز هستند، اما پذیرش سه دادهی پیمایشپذیر خالی وابسته به سکو است. (شناختهشده است که روی یونیکس کار میکند اما روی ویندوز خیر.) آرگومان اختیاری timeout یک مهلت زمانی را بر حسب ثانیه مشخص میکند؛ برای مشخص کردن کسری از ثانیه میتواند یک عدد غیرصحیح باشد. هنگامی که آرگومان timeout حذف شود یا None باشد، تابع تا زمانی که حداقل یک توصیفگر پرونده آماده شود، مسدود میماند. مقدار مهلت زمانی صفر، یک پایش را مشخص میکند و هرگز مسدود نمیشود.
مقدار بازگشتی، یک سهتایی از فهرستهایی از اشیای آماده است: زیرمجموعههایی از سه آرگومان نخست. هنگامی که مهلت زمانی بدون آماده شدن توصیفگر پروندهای به پایان برسد، سه فهرست خالی برگردانده میشود.
از میان انواع قابل قبول شیء در پیمایشپذیرها میتوان به اشیای پرونده پایتون (مثلاً sys.stdin، یا اشیای برگرداندهشده توسط open() یا os.popen()) و اشیای سوکت برگرداندهشده توسط socket.socket() اشاره کرد. همچنین میتوانید خودتان یک کلاس پوششی (wrapper) تعریف کنید، به شرطی که متد fileno() مناسبی داشته باشد (که واقعاً یک توصیفگر پرونده را برمیگرداند، نه صرفاً یک عدد صحیح تصادفی).
نکته
اشیای پرونده در ویندوز قابل قبول نیستند، اما سوکتها قابل قبول هستند. در ویندوز، تابع زیربنایی select() توسط کتابخانه WinSock ارائه میشود و توصیفگرهای پروندهای را که از WinSock منشأ نگرفتهاند، مدیریت نمیکند.
تغییر یافته در نسخهی 3.5: این تابع اکنون هنگامی که یک سیگنال آن را قطع کند، بهجای پرتاب InterruptedError، با یک مهلت زمانی بازمحاسبهشده دوباره اجرا میشود، مگر اینکه هندلر سیگنال استثنایی پرتاب کند (برای دلیل آن، PEP 475 را ببینید).
تغییر یافته در نسخهی 3.15: هر عدد حقیقی را به عنوان timeout میپذیرد، نه فقط عدد صحیح یا عدد اعشاری.
-
select.PIPE_BUF¶
حداقل تعداد بایتهایی که میتوان بدون مسدود شدن در یک پایپ نوشت، هنگامی که پایپ توسط select()، poll() یا رابط دیگری در این ماژول بهعنوان آماده برای نوشتن گزارش شده باشد. این موضوع به انواع دیگر اشیاء شبهپرونده مانند سوکتها اعمال نمیشود.
POSIX تضمین میکند که این مقدار حداقل ۵۱۲ باشد.
اشیای پایش /dev/poll¶
سولاریس و مشتقات آن دارای /dev/poll هستند. در حالی که select() از مرتبهی O(بالاترین توصیفگر پرونده) و poll() از مرتبهی O(تعداد توصیفگرهای پرونده) است، /dev/poll از مرتبهی O(توصیفگرهای پرونده فعال) است.
رفتار /dev/poll بسیار نزدیک به شیء استاندارد poll() است.
-
devpoll.close()¶
توصیفگر پرونده شیء پایش (polling) را ببندید.
-
devpoll.closed¶
True اگر شیء پایش (polling) بسته باشد.
-
devpoll.fileno()¶
شماره توصیفگر پرونده شیء polling را برمیگرداند.
-
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 را ببینید).
تغییر یافته در نسخهی 3.15: هر عدد حقیقی را به عنوان timeout میپذیرد، نه فقط عدد صحیح یا عدد اعشاری.
اشیای پایش (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 داده شود، مدت زمان بر حسب ثانیه (ممکن است غیرصحیح باشد) را مشخص میکند که سیستم قبل از بازگشت، منتظر رویدادها خواهد ماند.
تغییر یافته در نسخهی 3.5: این تابع اکنون هنگامی که یک سیگنال آن را قطع کند، بهجای پرتاب InterruptedError، با یک مهلت زمانی بازمحاسبهشده دوباره اجرا میشود، مگر اینکه هندلر سیگنال استثنایی پرتاب کند (برای دلیل آن، PEP 475 را ببینید).
تغییر یافته در نسخهی 3.15: هر عدد حقیقی را به عنوان timeout میپذیرد، نه فقط عدد صحیح یا عدد اعشاری.
اشیای پایش (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 را ببینید).
تغییر یافته در نسخهی 3.15: هر عدد حقیقی را به عنوان timeout میپذیرد، و محدود به عدد صحیح یا عدد اعشاری نیست. اگر تابع ppoll() در دسترس باشد، timeout به جای تفکیکپذیری 1 میلیثانیه، دارای تفکیکپذیری 1 نانوثانیه (1e-6 میلیثانیه) است.
اشیای 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 باشد یا None
max_events باید ۰ یا یک عدد صحیح مثبت باشد
مهلت زمانی بر حسب ثانیه (اعداد غیرصحیح امکانپذیر هستند)؛ پیشفرض None است تا برای همیشه منتظر بماند
تغییر یافته در نسخهی 3.5: این تابع اکنون هنگامی که یک سیگنال آن را قطع کند، بهجای پرتاب InterruptedError، با یک مهلت زمانی بازمحاسبهشده دوباره اجرا میشود، مگر اینکه هندلر سیگنال استثنایی پرتاب کند (برای دلیل آن، PEP 475 را ببینید).
تغییر یافته در نسخهی 3.15: هر عدد حقیقی را به عنوان timeout میپذیرد، نه فقط عدد صحیح یا عدد اعشاری.
اشیای 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_DELETE
|
unlink() فراخوانی شد. |
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¶
مقدار تعریفشده توسط کاربر.
©
حق نشر 2001 Python Software Foundation.
این صفحه تحت مجوز بنیاد نرمافزار پایتون نسخه ۲ منتشر شده است.
مثالها، دستورالعملها، و سایر کدهای موجود در مستندات همچنین تحت مجوز بدون بند BSD منتشر شدهاند.
برای اطلاعات بیشتر به
تاریخچه و مجوز مراجعه کنید.
بنیاد نرمافزار پایتون یک شرکت غیرانتفاعی است.
لطفاً کمک مالی کنید.
آخرین بهروزرسانی در نوامبر 12, 2026 (06:19 UTC).
آیا
اشکالی یافتید؟
ساخته شده با
Sphinx 9.1.0.