Subprocesses এর মাধ্যমে কমান্ড এক্সিকিউট করা একটি প্রোগ্রামিং কৌশল, যেখানে একটি প্রোগ্রাম অন্যান্য প্রোগ্রাম বা কমান্ড চালানোর জন্য উপপ্রকিয়াগুলির (subprocess) ব্যবহার করে। Rexx-এ subprocesses এর মাধ্যমে কমান্ড এক্সিকিউট করার জন্য আমরা exect ফাংশন বা call কমান্ড ব্যবহার করতে পারি।
Rexx-এ Subprocesses এর মাধ্যমে কমান্ড এক্সিকিউট করা
Rexx-এ subprocesses ব্যবহার করে কমান্ড এক্সিকিউট করতে exect বা call ফাংশন ব্যবহার করা হয়। এটি মূলত অন্য একটি প্রোগ্রাম বা অপারেটিং সিস্টেমের কমান্ড রান করার জন্য ব্যবহৃত হয়। এই প্রক্রিয়া সাধারণত স্ক্রিপ্টিংয়ে খুবই উপকারী যেখানে প্রোগ্রাম থেকে বাইরের প্রোগ্রাম বা কমান্ড চালানো প্রয়োজন হয়।
1. exect ফাংশন ব্যবহার করে Subprocesses এক্সিকিউট করা
Rexx-এ exect ফাংশন ব্যবহার করে আপনি বাইরের সিস্টেম কমান্ড বা প্রোগ্রাম চালাতে পারেন। এই ফাংশনটি ব্যবহার করে, আপনি একটি সিস্টেম কমান্ড রান করতে পারেন এবং তার ফলাফল পেতে পারেন।
ব্যবহার:
/* বাইরের কমান্ড এক্সিকিউট করা */
result = exect('dir') /* Windows এর জন্য */
if result = 0 then
say "Command executed successfully"
else
say "Command execution failed"এখানে exect ফাংশনটি dir কমান্ড রান করে, যা Windows-এ বর্তমান ডিরেক্টরির ফাইল তালিকা প্রদর্শন করে। যদি কমান্ডটি সফলভাবে সম্পন্ন হয়, তবে এটি ০ রিটার্ন করবে, অন্যথায় এটি একটি ত্রুটি কোড রিটার্ন করবে।
2. call কমান্ড ব্যবহার করে Subprocesses এক্সিকিউট করা
Rexx-এ call কমান্ড দিয়ে অন্য একটি প্রোগ্রাম বা স্ক্রিপ্ট রান করা সম্ভব। আপনি call এর মাধ্যমে subprocesses রান করাতে পারেন। তবে এটি একটু ভিন্নভাবে কাজ করে, কারণ call মূলত একটি সাবরুটিন বা ফাংশন কল করার জন্য ব্যবহৃত হয়, যেখানে আপনি যে কোডটি রান করতে চান সেটি কল করেন।
ব্যবহার:
/* অন্য স্ক্রিপ্ট বা কমান্ড চালানো */
call runCommand, 'ls' /* Linux/Mac এর জন্য কমান্ড */
exit
runCommand: procedure
parse arg command
result = exect(command) /* বাইরের কমান্ড রান করা */
if result = 0 then
say "Command executed successfully"
else
say "Command execution failed"
returnএখানে runCommand একটি সাবরুটিন, যা একটি কমান্ড (যেমন, ls বা অন্যান্য সিস্টেম কমান্ড) এক্সিকিউট করে। call runCommand, 'ls' দিয়ে subprocess রান করা হয়, এবং সেখান থেকে exect ফাংশন ব্যবহার করে কমান্ডটি চালানো হয়।
3. Command Output সংগ্রহ করা
Rexx-এ subprocesses থেকে আউটপুট সংগ্রহ করার জন্য আপনি exect ফাংশনের আউটপুট ব্যবহার করতে পারেন। এটি কমান্ড এক্সিকিউট করার পর তার আউটপুট অথবা ফলাফল সংগ্রহ করে।
ব্যবহার:
/* Command output সংগ্রহ */
output = exect('dir') /* Windows এর জন্য কমান্ড */
if output = 0 then
say "Command executed successfully"
else
say "Command execution failed"
say "Command Output: " output /* কমান্ডের আউটপুট প্রদর্শন */এখানে output = exect('dir') দ্বারা কমান্ডের আউটপুট সংগ্রহ করা হচ্ছে এবং তারপরে তা স্ক্রিনে প্রদর্শন করা হচ্ছে।
4. Error Handling (ত্রুটি ব্যবস্থাপনা)
যখন subprocesses রান করানো হয়, তখন ত্রুটি হওয়ার সম্ভাবনা থাকে। Rexx-এ subprocess রান করার সময় সঠিক ত্রুটি ব্যবস্থাপনা খুবই গুরুত্বপূর্ণ।
ব্যবহার:
/* Error Handling সহ কমান্ড এক্সিকিউট */
result = exect('nonexistentcommand') /* একটি ভুল কমান্ড এক্সিকিউট করা */
if result = 0 then
say "Command executed successfully"
else
say "Error: Command execution failed with error code " resultএখানে nonexistentcommand একটি ভুল কমান্ড, যা রান করা হলে ত্রুটি কোড রিটার্ন করবে। if স্টেটমেন্টের মাধ্যমে এটি সঠিকভাবে চেক করা হচ্ছে এবং ত্রুটির জন্য একটি বার্তা প্রদর্শন করা হচ্ছে।
সারাংশ:
Rexx-এ subprocesses ব্যবহার করে বিভিন্ন সিস্টেম কমান্ড বা প্রোগ্রাম এক্সিকিউট করা খুবই সহজ। exect ফাংশন ব্যবহার করে সরাসরি সিস্টেম কমান্ড রান করা যায় এবং এর আউটপুট সংগ্রহ করা যায়। call কমান্ড দিয়ে subprocesses রান করানো যেতে পারে যেখানে একটি সাবরুটিনের মাধ্যমে কমান্ড এক্সিকিউট করা হয়। ত্রুটি ব্যবস্থাপনা (Error Handling) করার জন্য, Rexx-এ subprocesses এর মাধ্যমে রান করা কমান্ডের ফলাফল চেক করা উচিত।
Read more