উত্তর:
লিনাক্সে, প্রতিটি প্রক্রিয়াটির সাথে সম্পর্কিত বিভিন্ন আইডি রয়েছে:
প্রক্রিয়া আইডি (পিআইডি)
এটি প্রক্রিয়া সনাক্তকারী একটি স্বেচ্ছাসেবী সংখ্যা। প্রতিটি প্রক্রিয়াটির একটি স্বতন্ত্র আইডি থাকে তবে প্রক্রিয়াটি প্রস্থান হওয়ার পরে এবং মূল প্রক্রিয়াটি প্রস্থান স্থিতি পুনরুদ্ধার করার পরে, প্রক্রিয়া আইডি একটি নতুন প্রক্রিয়া দ্বারা পুনরায় ব্যবহারের জন্য মুক্ত হয়।
মূল প্রক্রিয়া আইডি (পিপিআইডি)
এটি প্রক্রিয়াটির কেবলমাত্র পিআইডি যা প্রশ্নটি প্রক্রিয়া শুরু করে।
প্রক্রিয়া গ্রুপ আইডি (পিজিআইডি)
এটি প্রক্রিয়া গ্রুপ নেতার কেবলমাত্র পিআইডি। যদি পিআইডি == পিজিআইডি হয়, তবে এই প্রক্রিয়াটি একটি প্রক্রিয়া গ্রুপ লিডার।
সেশন আইডি (এসআইডি)
এটি সেশন নেতার কেবলমাত্র পিআইডি। যদি পিআইডি == এসআইডি হয়, তবে এই প্রক্রিয়াটি একটি সেশন লিডার।
সেশন এবং প্রক্রিয়া গ্রুপগুলি একক হিসাবে সম্পর্কিত বিভিন্ন প্রসেসের চিকিত্সার কেবল উপায়। কোনও প্রক্রিয়া গোষ্ঠীর সমস্ত সদস্য সর্বদা একই সেশনের অন্তর্ভুক্ত তবে একটি সেশনে একাধিক প্রক্রিয়া গ্রুপ থাকতে পারে।
সাধারণত, শেলটি একটি সেশন লিডার হবে এবং সেই শেলের দ্বারা চালিত প্রতিটি পাইপলাইন একটি প্রক্রিয়া গ্রুপ হবে। এটি খোলার বাচ্চাদের বাইরে বেরোনোর সময় তাকে হত্যা করা সহজ করে তোলে। ( ক্ষতিকারক বিশদের জন্য প্রস্থান দেখুন (3) ।)
আমি মনে করি না কোনও অধিবেশন বা প্রক্রিয়া গ্রুপের সদস্যের জন্য একটি বিশেষ শব্দ রয়েছে যা নেতা নয় isn't
সেশন লিডার এমন একটি প্রক্রিয়া যেখানে সেশন আইডি == প্রসেস আইডি। এটি সুরক্ষিত শোনায় তবে সেশন আইডি শিশু প্রক্রিয়া অনুসারে উত্তরাধিকার সূত্রে প্রাপ্ত। ইউএনআইএক্স / লিনাক্সের মধ্যে কিছু ক্রিয়াকলাপ প্রক্রিয়া সেশনে পরিচালিত হয়, উদাহরণস্বরূপ, কিল সিস্টেম কল বা কমান্ড প্রেরণের সময় প্রক্রিয়া আইডিকে অবহেলা করা। এটির সর্বাধিক সাধারণ ব্যবহার হ'ল শেলটি লগ আউট করার সময়। ওএস প্রেরণ করবে kill -HUP -$$
, যা শেলের মতো একই সেশন আইডি সহ সমস্ত প্রক্রিয়াতে একটি সিগআপ (হ্যাঙ্গআপ) সংকেত প্রেরণ করবে। আপনি যখন কোনও প্রক্রিয়া অস্বীকার করবেন তখন প্রক্রিয়াটির সেশন আইডিটি শেল থেকে পরিবর্তিত হয়, সুতরাং এটি হ্যাঙ্গআপ সংকেতের সাড়া দেয় না। এটি একটি ডিমন প্রক্রিয়া হওয়ার প্রক্রিয়ার একটি অংশ।
উইন্ডো ম্যানেজার / গ্রাফিক্যাল এনভায়রনমেন্ট থেকে ডেকে আনা বেশিরভাগ প্রসেসের একটি সেশন প্রোগ্রামের মতো একই সেশন আইডি থাকে। এটি ওএসকে kill -HUP -$$
সমস্ত প্রোগ্রামে একই ক্রিয়াকলাপ করতে দেয় : যেমন আপনার ব্রাউজার, সঙ্গীত প্লেয়ার, লাইব্রোফাইস, আইএম ক্লায়েন্ট ইত্যাদি These এই প্রক্রিয়াগুলি সেশন লিডার নয়।
আমি ভেবেছিলাম আমি এর উত্তর জানি, তবে এটি বের করার জন্য আমি একটি সি প্রোগ্রাম লিখেছিলাম।
#include <stdio.h>
#include <unistd.h>
int
main(int ac, char **av)
{
pid_t sid, mypid, pgid, gid;
mypid = getpid();
sid = getsid(0);
pgid = getpgid(0);
gid = getpgrp();
printf("PID %d\n", mypid);
printf("process group ID of session leader: %d\n", sid);
printf("process group ID: %d\n", pgid);
printf("process group ID: %d\n", gid);
if (!fork())
{
mypid = getpid();
sid = getsid(0);
pgid = getpgid(0);
gid = getpgrp();
printf("child PID %d\n", mypid);
printf("process group ID of session leader: %d\n", sid);
printf("process group ID: %d\n", pgid);
printf("process group ID: %d\n", gid);
_exit(0);
}
return 0;
}
আমি এটি cc -g -o sid sid.c
কয়েকটি বিভিন্ন উপায়ে এটি সংকলন করেছি , যা ঘটেছিল তা দেখার জন্য:
./sid
nohup ./sid > sid.out
setsid ./sid
লিনাক্স (২.6.৩৯) কী ফিরিয়ে দিয়েছে তা দেখে আমি একপ্রকার অবাক হয়েছি। আমি সেকশন 7 ম্যান পৃষ্ঠা, "শংসাপত্রগুলি "ও পেয়েছি।
আমার পরামর্শটি হ'ল man 7 credentials
(বা লিনাক্সে না থাকলে সমমান) এবং প্রসেস গ্রুপ এবং সেশন সম্পর্কে বিভাগটি পড়ুন আপনি এটি ধাঁধা দিতে পারেন কিনা তা দেখুন।
./sid
এবং nohup ./sid
আপনি যখন চালনা setsid ./sid
করেন সেশন আইডি (এসআইডি) একেবারে নতুন এবং প্রক্রিয়া পিআইডি হিসাবে একই ... আমি ' আমি নিশ্চিত না কেন নোহুপ কাঁটাচামড়া আটকেছিল (বা মনে হচ্ছে) তবে আমি মনে করি আমি সাধারণ ধারণা পেয়েছি ...
ps xao pid,ppid,pgid,sid,comm
এই আইডিগুলি দেখতে ব্যবহার করুন ।