Pseudo-terminal ইউটিলিটি মডিউল pty ছদ্ম-টার্মিনাল কনসেপ্ট হ্যান্ডেল করার জন্য ডিফাইন করা হয়েছে। এটি ব্যবহার করে আমরা অন্য একটি প্রসেস শুরু করতে পারি, এবং কন্ট্রোলিং টার্মিনাল থেকে প্রোগ্রাম ব্যবহার করে পড়তে বা লিখতে পারি।
এই মডিউল অত্যন্ত প্ল্যাটফর্ম-ওরিয়েন্টেড। আমাদের এই অপারেশন করার জন্য ইউনিক্স সিস্টেম ব্যবহার করা উচিত।
pty মডিউল ব্যবহার করতে হলে, আমাদের এটি ইম্পোর্ট করতে হবে -
import pty
pty মডিউলের কিছু মডিউল রয়েছে, এগুলো হলো -
pty.fork() মেথড
এই মেথড চাইল্ড কন্ট্রোলিং টার্মিনালকে ছদ্ম-টার্মিনালের সাথে কানেক্ট করতে ব্যবহৃত হয়। এই মেথড pid এবং fd ফেরত দেয়। চাইল্ড প্রসেস pid ০ পায়, কিন্তু fd ইনভ্যালিড। পেরেন্টের রিটার্ন ভ্যালু হলো চাইল্ড প্রসেসের pid এবং fd ধারণ করে চাইল্ড কন্ট্রোলিং টার্মিনাল।
pty.openpty() মেথড
এই মেথড একটি নতুন ছদ্ম-টার্মিনাল পেয়ার খুলতে ব্যবহৃত হয়। এটি মাস্টার এবং স্লেভের জন্য একটি ফাইল ডেসক্রিপ্টর ফেরত দেয়।
pty.spawn(argv[, master_read[, stdin_read]]) মেথড
স্পন প্রসেস তার কন্ট্রোলিং টার্মিনালকে কারেন্ট প্রসেসের স্ট্যান্ডার্ড I/O-র সাথে কানেক্ট করতে ব্যবহৃত হয়। master_read এবং stdin_read ফাইল ডেসক্রিপ্টর থেকে পড়ে। ডিফল্ট সাইজ ১০২৪ বাইট।
উদাহরণ কোড
import pty, os
def process_parent_child():
(process_id, fd) = pty.fork()
print("The Process ID for the Current process is: " + str(os.getpid()))
print("The Process ID for the Child process is: " + str(process_id))
process_parent_child()
master, slave = pty.openpty()
print('Name of the Master: ' + str(os.ttyname(master)))
print('Name of the Slave: ' + str(os.ttyname(slave)))
আউটপুট
The Process ID for the Current process is: 12508 The Process ID for the Child process is: 12509 Name of the Master: /dev/ptmx Name of the Slave: /dev/pts/2