আমি শিক্ষামূলক উদ্দেশ্যে টার্মিনালের সাথে সংযুক্ত একটি চলমান বাশ প্রক্রিয়াটির স্ট্রেস আউটপুটটি দেখছি।
আমার বাশ প্রক্রিয়াটির পিআইডি 2883 রয়েছে।
আমি টাইপ
[OP@localhost ~]$ strace -e trace=openat,read,write,fork,vfork,clone,execve -p 2883 2> bash.strace
টার্মিনালে nto আমি তখন আমার বাশ প্রক্রিয়াতে যাই এবং নিম্নলিখিত ইন্টারঅ্যাকশন করি:
[OP@localhost ~]$ ls
আউটপুট তাকিয়ে, আমি দেখতে
strace: Process 2883 attached
read(0, "l", 1) = 1
write(2, "l", 1) = 1
read(0, "s", 1) = 1
write(2, "s", 1) = 1
read(0, "\r", 1) = 1
write(2, "\n", 1) = 1
clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7fec6b1d8e50) = 3917
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=3917, si_uid=1000, si_status=0, si_utime=0, si_stime=0} ---
write(1, "\33]0;OP@localhost:~\7", 23) = 23
write(2, "[OP@localhost ~]$ ", 22) = 22
...
আমি শেষ দুটি লাইনে বিভ্রান্ত হয়ে পড়েছি। মনে হচ্ছে বাশ দুটি শেল প্রম্পট লেখার চেষ্টা করছে? এখানে কি হচ্ছে?
cat
করি তবে দুটি পার্থক্য রয়েছে: এটি লাইন দ্বারা ইনপুট লাইনটি পড়ে, এবং এটি যখন তার ইনপুটটি স্টডআউটের কাছে প্রতিধ্বনিত করে, আমি ইনপুটটি দু'বার দেখি (একবার আমি টাইপ করার পরে এবং একবার বিড়াল যখন প্রতিধ্বনিত হয়)।