کتابخانه‌ی استاندارد · سیستم و ابزار

فرآیند os/process

اجرای برنامه‌های دیگر، گرفتن خروجی‌شان، صبر برای پایانشان و متوقف کردنشان.

واردسازی سیستم عامل.فرآیند
در این صفحه
  1. گونه‌ها
  2. روال‌ها

بسته‌ی فرآیند یک برنامه‌ی دیگر را مستقیم، بدون پوسته، اجرا می‌کند. مسیر برنامه و آرگومان‌ها جدا داده می‌شوند، پس نیازی به نقل‌قول‌گذاری نیست و فاصله‌ها یا نویسه‌های خاص در آرگومان‌ها مشکلی درست نمی‌کنند.

اگر خروجی برنامه را لازم دارید، با شروع با ضبط اجرایش کنید، صبر کنید تمام شود و بعد خروجی‌اش را بخوانید. در پایان پاکسازی را صدا بزنید.

گونه‌ها

فرآیند Process

ساختار فرآیند
یک فرآیند در حال اجرا یا تمام‌شده.
نامانگلیسیگونهتوضیح
pidpidصحیح = 0شناسه‌ی فرآیند.
handlehandleتهی*دستگیره‌ی فرآیند در ویندوز.
runningrunningمنطقی = نادرستاگر هنوز در حال اجرا باشد، درست است.
exit_codeexit_codeصحیح = 0کد خروج، پس از پایان.
stdout_pathstdout_pathرشته = ""پرونده‌ی موقتی که خروجی ضبط‌شده در آن است.
stderr_pathstderr_pathرشته = ""پرونده‌ی موقتی که خروجی خطای ضبط‌شده در آن است.
os-process-Start.salam
واردسازی سیستم عامل.فرآیند

روال ریشه:
    ناپایا آرگ := وکتور {} برگردان وکتور<رشته>
    دیرکن آرگ.آزادکن()
    آرگ.بیفزا("سلام از فرآیند فرزند")
    ناپایا ف := فرآیند.شروع با ضبط("/bin/echo"، آرگ)
    سرچاپ فرآیند.شناسه فرآیند(ف) > ۰
    کد := فرآیند.انتظار(ف)
    سرچاپ کد، فرآیند.کد خروج(ف)، فرآیند.در حال اجرا(ف)
    چاپ فرآیند.خواندن خروجی(ف)
    سرچاپ "[" + فرآیند.خواندن خطا(ف) + "]"
    فرآیند.پاکسازی(ف)
پایان
خروجیtrue 0 0 false سلام از فرآیند فرزند []

روال‌ها

شروع Start

روال شروع(path: رشته، args: وکتور<رشته>): فرآیند
برنامه را با آرگومان‌ها اجرا می‌کند و منتظر نمی‌ماند؛ خروجی‌اش مستقیم در خروجی برنامه‌ی شما دیده می‌شود.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: os-process-Start.salam

شروع با ضبط StartCaptured

روال شروع با ضبط(path: رشته، args: وکتور<رشته>): فرآیند
مثل شروع، ولی خروجی و خطای برنامه را ضبط می‌کند تا بعداً بخوانید.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: os-process-Start.salam

انتظار شناسه WaitPid

روال انتظار شناسه(pid: صحیح): صحیح
صبر می‌کند تا فرآیندی با این شناسه تمام شود و کد خروجش را برمی‌گرداند.
os-process-Kill.salam
واردسازی سیستم عامل.فرآیند

روال ریشه:
    ناپایا آرگ := وکتور {} برگردان وکتور<رشته>
    دیرکن آرگ.آزادکن()
    آرگ.بیفزا("30")
    ناپایا ف := فرآیند.شروع("/bin/sleep"، آرگ)
    سرچاپ فرآیند.در حال اجرا(ف)
    فرآیند.پایان دادن(ف)
    فرآیند.انتظار(ف)
    سرچاپ فرآیند.در حال اجرا(ف)
    ناپایا ف۲ := فرآیند.شروع("/bin/sleep"، آرگ)
    فرآیند.کشتن(ف۲)
    فرآیند.انتظار شناسه(فرآیند.شناسه فرآیند(ف۲))
    سرچاپ "هر دو متوقف شدند"
پایان
خروجیtrue false هر دو متوقف شدند

انتظار Wait

روال انتظار(p &: فرآیند): صحیح
صبر می‌کند تا فرآیند تمام شود و کد خروجش را برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: os-process-Start.salam

انشعاب Fork

روال انشعاب(): صحیح
فرآیند فعلی را دو تا می‌کند: در فرزند صفر برمی‌گرداند و در والد شناسه‌ی فرزند. فقط روی سیستم‌های یونیکس؛ نمونه‌اش اینجا اجرا نمی‌شود.
os-process-Fork.salam
واردسازی سیستم عامل.فرآیند

روال ریشه:
    ش := فرآیند.انشعاب()
    اگر ش == ۰:
        سرچاپ "من فرزندم"
        فرآیند.خروج فوری(۰)
    پایان
    فرآیند.انتظار شناسه(ش)
    سرچاپ "فرزند تمام شد"
پایان

خروج فوری ExitNow

روال خروج فوری(code: صحیح)
فرآیند را فوراً و بدون هیچ پاک‌سازی تمام می‌کند؛ برای پایان دادن به فرزند پس از انشعاب.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: os-process-Fork.salam

کشتن Kill

روال کشتن(p &: فرآیند): صحیح
فرآیند را بی‌درنگ می‌کشد (SIGKILL).

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: os-process-Kill.salam

پایان دادن Terminate

روال پایان دادن(p &: فرآیند): صحیح
از فرآیند می‌خواهد با آرامش تمام شود (SIGTERM) تا فرصت پاک‌سازی داشته باشد. در ویندوز همان کشتن است.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: 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