Reading and Writing with stdin and stdout
Python bilan Subprocesslar Ishga Tushirish.
stdin
va stdout
bilan o‘qish va yozish
Keling, bugungi vazifangiz deb faraz qilaylik, sizga Linux serveringizda hozirda ishlayotgan jarayonlarni tekshiradigan va Python bilan ishlayotgan jarayonlarni chiqaradigan Python dasturini yozish vazifasi berilgan. Siz hozirda ishlayotgan jarayonlar ro‘yxatini olish uchun ps -ef
komandasidan foydalanishingiz mumkin. Odatda siz bu komandani ishlatib, natijani grep
komandasiga "pipe" qilib yuborasiz, bu esa fayllarda satrlarni qidirish uchun ishlatiladigan boshqa bir Linux komandasi.
Quyidagi to‘liq Linux komandasi yordamida buni amalga oshirishingiz mumkin:
Endi esa ushbu komandani Python yordamida subprocess
moduli orqali qanday bajarish mumkinligini ko‘rib chiqamiz. Mana bir yo‘l:
Ushbu kod ps -ef
komandasini qayta yaratadi va subprocess.Popen
yordamida uni chaqiradi. Komanda natijasini subprocess.PIPE
orqali ushlaysiz.
grep
komandasida uning stdin
parametri ps
komandasining chiqishiga o‘rnatiladi. Shuningdek, grep
komandasining stdout
ni ushlab, encodingni utf-8
qilib belgilaysiz.
Bu, asosan, ps
komandasining natijasini olish va uni "pipe" yoki grep
komandasiga yuborish vazifasini bajaradi.
Keyingi qadamda, ps
komandasining stdout
ini close()
orqali yopasiz va grep
komandasining communicate()
metodidan foydalanib, grep
ning chiqishini olasiz.
Oxirgi qadamda, chiqishni satr bo‘yicha (\n
) bo‘lib, barcha faol Python jarayonlarini ro‘yxatga olasiz. Agar hozirda hech qanday faol Python jarayoni ishlayotgan bo‘lmasa, natija bo‘sh ro‘yxat bo‘ladi.
Siz har doim ps -ef
ni o‘zingiz ishga tushirishingiz va boshqa narsalarni qidirish uchun python
o‘rniga boshqa satrni qo‘shib sinab ko‘rishingiz mumkin.
Last updated on