The subprocess.Popen Class

Python bilan Subprocesslar Ishga Tushirish.

SU

subprocess.Popen() klassi

subprocess.Popen() klassi subprocess moduli qo‘shilganidan beri mavjud. U Python 3da bir necha bor yangilangan. Agar siz bu o‘zgarishlar haqida batafsil o‘rganishni istasangiz, quyidagi manzilda o‘qishingiz mumkin: • Popen konstruktorining hujjati

Popenni run()ning pastki darajadagi versiyasi sifatida tasavvur qilishingiz mumkin. Agar run() sizning maxsus holatingizni bajarolmasa, unda Popenni ishlatishingiz kerak.

Hozircha, oldingi bo‘limdagi komandani Popen yordamida qanday ishga tushirishingizni ko‘rib chiqamiz:

import subprocess
subprocess.Popen(['ls', '-l'])

Natija:

<subprocess.Popen object at 0x10f88bdf0>
total 40
-rw-r--r--@ 1 michael staff 17083 Apr 15 13:17 some_file

Sintaksis deyarli bir xil, faqat run() o‘rniga Popen ishlatilyapti.

Tashqi jarayonning return codeini qanday olishni ko‘rib chiqamiz:

process = subprocess.Popen(['ls', '-l'])
return_code = process.wait()
print(return_code)

Natija:

0

return_codening qiymati 0 bo‘lsa, bu dastur muvaffaqiyatli yakunlanganini anglatadi. Agar siz foydalanuvchi interfeysiga ega dastur ochsangiz, masalan, Microsoft Notepad, siz REPL yoki IDLE sessiyasiga qaytishingiz kerak bo‘ladi va process.wait() qatorini qo‘shishingiz kerak. Buning sababi, Notepad dasturi sizning dasturingiz ustiga chiqadi.

Agar siz process.wait()ni skriptga qo‘shmasangiz, tashqi dastur interfeysini qo‘lda yopgandan so‘ng, qaytish kodi olish imkoniyatingiz bo‘lmaydi.

Siz o‘z jarayonni pid atributi orqali uning jarayon identifikatoriga (PID) kirishingiz mumkin. Shuningdek, jarayonni process.kill() yordamida SIGKILL (o‘chirish) yoki process.terminate() yordamida SIGTERM (tugatish) bilan o‘ldirishingiz mumkin.

SIGKILL / SIGTERM nima?

Agar siz "SIGKILL" va "SIGTERM" atamalari bilan tanish bo‘lmasangiz, ularni UNIX tizimlarida jarayonlarga ta'sir qilish uchun ishlatiladigan standart buyruqlar sifatida qabul qilishingiz mumkin. subprocess.Popen() klassi ushbu buyruqlar bilan ishlash uchun qulay interfeysni taqdim etadi. Agar qiziqsangiz, Signal Handling haqida Vikipediada qo‘shimcha ma'lumot o‘qishingiz mumkin: • Signal (IPC) - Vikipediya maqolasi

Last updated on

On this page

Xato haqida xabar berish