فرآیند os/process
اجرای برنامههای دیگر، گرفتن خروجیشان، صبر برای پایانشان و متوقف کردنشان.
واردسازی سیستم عامل.فرآیند
بستهی فرآیند یک برنامهی دیگر را مستقیم، بدون پوسته، اجرا میکند. مسیر برنامه و آرگومانها جدا داده میشوند، پس نیازی به نقلقولگذاری نیست و فاصلهها یا نویسههای خاص در آرگومانها مشکلی درست نمیکنند.
اگر خروجی برنامه را لازم دارید، با شروع با ضبط اجرایش کنید، صبر کنید تمام شود و بعد خروجیاش را بخوانید. در پایان پاکسازی را صدا بزنید.
گونهها
فرآیند Process
ساختار فرآیند| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| pid | pid | صحیح = 0 | شناسهی فرآیند. |
| handle | handle | تهی* | دستگیرهی فرآیند در ویندوز. |
| running | running | منطقی = نادرست | اگر هنوز در حال اجرا باشد، درست است. |
| exit_code | exit_code | صحیح = 0 | کد خروج، پس از پایان. |
| stdout_path | stdout_path | رشته = "" | پروندهی موقتی که خروجی ضبطشده در آن است. |
| stderr_path | stderr_path | رشته = "" | پروندهی موقتی که خروجی خطای ضبطشده در آن است. |
واردسازی سیستم عامل.فرآیند
روال ریشه:
ناپایا آرگ := وکتور {} برگردان وکتور<رشته>
دیرکن آرگ.آزادکن()
آرگ.بیفزا("سلام از فرآیند فرزند")
ناپایا ف := فرآیند.شروع با ضبط("/bin/echo"، آرگ)
سرچاپ فرآیند.شناسه فرآیند(ف) > ۰
کد := فرآیند.انتظار(ف)
سرچاپ کد، فرآیند.کد خروج(ف)، فرآیند.در حال اجرا(ف)
چاپ فرآیند.خواندن خروجی(ف)
سرچاپ "[" + فرآیند.خواندن خطا(ف) + "]"
فرآیند.پاکسازی(ف)
پایانروالها
شروع Start
روال شروع(path: رشته، args: وکتور<رشته>): فرآیندنمونهی این مورد همراه با موارد بالاتر آمده است: os-process-Start.salam
شروع با ضبط StartCaptured
روال شروع با ضبط(path: رشته، args: وکتور<رشته>): فرآیندشروع، ولی خروجی و خطای برنامه را ضبط میکند تا بعداً بخوانید.نمونهی این مورد همراه با موارد بالاتر آمده است: os-process-Start.salam
انتظار شناسه WaitPid
روال انتظار شناسه(pid: صحیح): صحیحواردسازی سیستم عامل.فرآیند
روال ریشه:
ناپایا آرگ := وکتور {} برگردان وکتور<رشته>
دیرکن آرگ.آزادکن()
آرگ.بیفزا("30")
ناپایا ف := فرآیند.شروع("/bin/sleep"، آرگ)
سرچاپ فرآیند.در حال اجرا(ف)
فرآیند.پایان دادن(ف)
فرآیند.انتظار(ف)
سرچاپ فرآیند.در حال اجرا(ف)
ناپایا ف۲ := فرآیند.شروع("/bin/sleep"، آرگ)
فرآیند.کشتن(ف۲)
فرآیند.انتظار شناسه(فرآیند.شناسه فرآیند(ف۲))
سرچاپ "هر دو متوقف شدند"
پایانانتظار Wait
روال انتظار(p &: فرآیند): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: os-process-Start.salam
انشعاب Fork
روال انشعاب(): صحیحواردسازی سیستم عامل.فرآیند
روال ریشه:
ش := فرآیند.انشعاب()
اگر ش == ۰:
سرچاپ "من فرزندم"
فرآیند.خروج فوری(۰)
پایان
فرآیند.انتظار شناسه(ش)
سرچاپ "فرزند تمام شد"
پایانخروج فوری ExitNow
روال خروج فوری(code: صحیح)انشعاب.نمونهی این مورد همراه با موارد بالاتر آمده است: os-process-Fork.salam
کشتن Kill
روال کشتن(p &: فرآیند): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: os-process-Kill.salam
پایان دادن Terminate
روال پایان دادن(p &: فرآیند): صحیحکشتن است.نمونهی این مورد همراه با موارد بالاتر آمده است: os-process-Kill.salam
خواندن خروجی ReadStdout
روال خواندن خروجی(p: فرآیند): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: os-process-Start.salam
خواندن خطا ReadStderr
روال خواندن خطا(p: فرآیند): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: os-process-Start.salam
پاکسازی Cleanup
روال پاکسازی(p &: فرآیند)نمونهی این مورد همراه با موارد بالاتر آمده است: os-process-Start.salam
کد خروج ExitCode
روال کد خروج(p: فرآیند): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: os-process-Start.salam
شناسه فرآیند Pid
روال شناسه فرآیند(p: فرآیند): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: os-process-Start.salam
در حال اجرا IsRunning
روال در حال اجرا(p: فرآیند): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: os-process-Start.salam