প্রতিটি সিউডো-টার্মিনাল (পিটিওয়াই) উপাদান (সফ্টওয়্যার, মাস্টার সাইড, স্লেভ সাইড) এর কী কী দায়িত্ব রয়েছে?


59

আমি টিটি কীভাবে 1 কাজ করে তা নির্ধারণ করার চেষ্টা করছি (প্রতিটি উপাদানগুলির কাজের প্রবাহ এবং দায়িত্ব)। আমি এটি সম্পর্কে বেশ কয়েকটি আকর্ষণীয় নিবন্ধ পড়েছি তবে এখনও কিছু অস্পষ্ট অঞ্চল রয়েছে।

এটি আমি এখনও অবধি বুঝতে পেরেছি:

  • এমুলেটেড টার্মিনালটি /dev/ptmxসিউডো-টার্মিনালের মাস্টার অংশ হিসাবে বিভিন্ন সিস্টেমকে কল করে ।
  • সিউডো টার্মিনালের প্রধান অংশ /dev/pts/[0-N]অপ্রচলিত সিরিয়াল পোর্টের সাথে সম্পর্কিত এবং একটি স্লেভ সিউডো টার্মিনালটিকে "সংযুক্ত" করে একটি ফাইল বরাদ্দ করে।
  • স্লেভ সিউডো টার্মিনালটি সেশন আইডি, ফোরগ্রাউন্ড জব, স্ক্রিনের আকারের মতো তথ্য রাখে।

আমার প্রশ্নগুলি এখানে:

  1. দাস অংশ বরাদ্দকরণ ছাড়াও পিটিএমএক্সের কোনও উদ্দেশ্য আছে? এটি কোনও ধরণের "বুদ্ধি" সরবরাহ করে , বা অনুকরণকৃত টার্মিনাল (উদাহরণস্বরূপ xterm) এর সাথে টার্মিনালের মতো আচরণ করার সমস্ত বুদ্ধি রয়েছে?
  2. এক্সটার্মকে কেন মাস্টার অংশের সাথে ইন্টারঅ্যাক্ট করতে হবে, কারণ এটি কেবল দাস অংশের স্টাডাউট এবং স্টিডিনকে এগিয়ে দেয়? এটি পিটিএস ফাইল থেকে সরাসরি লিখতে বা পড়তে পারে না কেন ?
  3. একটি সেশন আইডি সর্বদা একটি পিটিএস ফাইল এবং এর বিপরীতে সংযুক্ত থাকে? আমি কি একটি পিএস কমান্ড টাইপ করতে এবং একই / দেব / পিটিএস / এক্স এর জন্য 2 সেশনআইডি খুঁজে পেতে পারি?
  4. আর কি তথ্য ptsস্টোর করে? Xterm নিজেই সমস্ত ক্ষেত্র আপডেট করে না, বা ptmএটিতে কিছু "বুদ্ধি" যুক্ত করে?

১. আমি লিনাস আকেসন দ্বারা নির্ধারিত টিটিওয়াই , এবং এই সাইটগুলির আরও কয়েকটি প্রশ্নের মত লিনাক্স কার্নেল অ্যান্ড্রিজ ব্রউউয়ার পোস্টের ভিত্তিতে আমার বোঝার ভিত্তি তৈরি করেছি

উত্তর:


58

টার্মিনাল এমুলেটর

মাস্টার সাইডটি টার্মিনালে যাওয়া লাইনটি (টিএক্স / আরএক্স তারের জোড়া) প্রতিস্থাপন করে।

টার্মিনালটি তারের একটিতে প্রাপ্ত অক্ষরগুলি প্রদর্শন করে (তাদের মধ্যে কয়েকটি নিয়ন্ত্রণের অক্ষর এবং এটি কার্সার সরানো, রঙ পরিবর্তন করা ... ইত্যাদি জিনিসগুলি করায়) এবং আপনার টাইপের কীগুলির সাথে সম্পর্কিত অন্য অক্ষরে অক্ষর প্রেরণ করে।

এক্সটারমের মতো টার্মিনাল এমুলেটরগুলি তারের অক্ষরগুলি প্রেরণ ও গ্রহণের পরিবর্তে আলাদা নয়, তারা মাস্টার সাইডে তাদের ফাইল বিবরণীতে অক্ষরগুলি পড়েন এবং লেখেন। একবার তারা স্লেভ টার্মিনাল তৈরি করে এবং আপনার শেলটি এটি শুরু করার পরে, তারা আর এটি স্পর্শ করে না। তারের জুড়ি অনুকরণ করার পাশাপাশি, এক্সটার্ম সেই ফাইল বিবরণীর মাধ্যমে কিছু লাইন শৃঙ্খলা বৈশিষ্ট্যকে মাস্টার সাইডেও পরিবর্তন করতে পারে। উদাহরণস্বরূপ, তারা আকারের বৈশিষ্ট্যগুলি আপডেট করতে পারে যাতে অ্যাপ্লিকেশনগুলিতে একটি সাইনচিনচ প্রেরণ করা যায় যা স্লেভ পিটিআইয়ের সাথে যোগাযোগ করে পরিবর্তিত আকার সম্পর্কে তাদের জানাতে।

এগুলি ছাড়াও, টার্মিনাল / টার্মিনাল এমুলেটরটিতে সামান্য বুদ্ধি রয়েছে।

আপনি টার্মিনাল ডিভাইসে যা লেখেন (পিটিআই ক্রীতদাসের মতো) সেখানে আপনি প্রদর্শিত হওয়ার অর্থ যা আপনি এটি থেকে পড়েছেন তা আপনি সেখানে টাইপ করেছেন তাই টার্মিনাল এমুলেটরটি পড়তে বা লিখতে কোনও অর্থ হয় না does । তারা অন্য প্রান্তে এক হয়।


Tty লাইন শৃঙ্খলা

অনেক বুদ্ধি হয় TTY লাইন শৃঙ্খলা । লাইন শৃঙ্খলা হ'ল একটি সফ্টওয়্যার মডিউল (ড্রাইভারের মধ্যে থাকা, কার্নেলের মধ্যে থাকা) একটি সিরিয়াল / পিটিআই ডিভাইসের উপরে চাপ দেওয়া হয় যা সেই ডিভাইস এবং লাইন / তারের (একটি পাইটির জন্য মাস্টার সাইড) মধ্যে বসে থাকে।

একটি সিরিয়াল লাইনে অন্য প্রান্তে টার্মিনাল থাকতে পারে তবে নেটওয়ার্কিংয়ের জন্য একটি মাউস বা অন্য কম্পিউটারও থাকতে পারে। সিরিয়াল ডিভাইস (বা পিটিআই ডিভাইস) এর উপরে নেটওয়ার্ক ইন্টারফেস পেতে উদাহরণস্বরূপ আপনি একটি এসএলআইপি লাইন শৃঙ্খলা সংযুক্ত করতে পারেন, বা আপনার একটি টিটি লাইনের শৃঙ্খলা থাকতে পারে। Tty লাইন শৃঙ্খলা হ'ল কমপক্ষে সিরিয়াল এবং pty ডিভাইসের জন্য লিনাক্সে ডিফল্ট লাইন শৃঙ্খলা। লিনাক্সে, আপনি এর সাথে লাইন শৃঙ্খলা পরিবর্তন করতে পারেন ldattach

টিটি লাইনের শৃঙ্খলা নিষ্ক্রিয় করার প্রভাব আপনি জারি করে দেখতে পারেন stty raw -echo(নোট করুন যে ব্যাশ প্রম্পট বা অন্যান্য ইন্টারেক্টিভ অ্যাপ্লিকেশনগুলি viটার্মিনালটি তাদের যথাযথ মোডে সেট করে, যাতে আপনি এটির catসাথে অভিজ্ঞতার মতো বোবা প্রয়োগ ব্যবহার করতে চান )। তারপরে, স্লেভ টার্মিনাল ডিভাইসে যা কিছু লেখা আছে তা Xterm পড়ার জন্য অবিলম্বে মাস্টার সাইডে পরিণত করে এবং মাস্টার সাইডে xterm দ্বারা রচিত প্রতিটি অক্ষর তাত্ক্ষণিক দাস ডিভাইস থেকে পড়ার জন্য উপলব্ধ available

টার্মিনাল ডিভাইস অভ্যন্তরীণ লাইন সম্পাদক প্রয়োগ করা হয় যেখানে লাইন শৃঙ্খলা । উদাহরণস্বরূপ stty icanon echo(যেমন ডিফল্ট হিসাবে), আপনি টাইপ করার সময় a, এক্সটার্ম aমাস্টারকে লেখেন , তারপরে লাইন শৃঙ্খলাটি এটিকে আবার প্রতিধ্বনিত করে ( প্রদর্শনের aজন্য পড়ার জন্য উপলব্ধ করে xtermতোলে), তবে গোলামের পাশে পড়ার জন্য কিছু উপলব্ধ করে না । তারপর যদি আপনি ব্যাকস্পেস টাইপ করুন, xterm একটি পাঠায় ^?বা ^H(যে চরিত্রেও, লাইন শৃঙ্খলা ^?বা ^Hঅনুরূপ eraseলাইন শৃঙ্খলা সেটিং) মাস্টার একটি ফিরে পাঠায় ^H, spaceএবং ^Hজন্য xtermনিশ্চিহ্নaআপনি কেবলমাত্র তার স্ক্রিনে টাইপ করেছেন এবং স্লেভ দিক থেকে অ্যাপ্লিকেশন পড়ার জন্য এখনও কিছু পাঠায় না, এটি aআপনি আগে টাইপ করেছেন তা সরাতে এটির অভ্যন্তরীণ লাইন সম্পাদক বাফার আপডেট করে ।

তারপরে আপনি এন্টার টিপলে, এক্সটার্ম প্রেরণ করে ^M(সিআর), যা লাইন শৃঙ্খলা ইনপুটটিতে একটি ^ জে (এলএফ) এ রূপান্তর করে এবং স্লেভ সাইডে পড়ার জন্য আপনি এতদূর যা প্রবেশ করেছেন তা প্রেরণ করে (একটি অ্যাপ্লিকেশন রিডিং যা /dev/pts/xগ্রহণ করবে আপনি এলএফ সহ টাইপ করেছেন, তবে aএটি মুছে ফেলার পরে নয়) তবে মাস্টার সাইডে, এটি একটি সিআর এবং এলএফ প্রেরণ করে পরবর্তী লাইনটিতে এবং স্ক্রিনের শুরুতে to

লাইন শৃঙ্খলাটি টার্মিনালের অগ্রভাগ প্রক্রিয়া গোষ্ঠীতে সংকেত প্রেরণেরSIGINT জন্যও দায়ী যখন এটি ^Cমাস্টার দিকে কোনও অক্ষর গ্রহণ করে etc.

অনেক ইন্টারেক্টিভ টার্মিনাল অ্যাপ্লিকেশন সেগুলি প্রয়োগ করতে সেই লাইন শৃঙ্খলার বেশিরভাগ বৈশিষ্ট্য অক্ষম করে। তবে যে কোনও ক্ষেত্রে, সাবধান থাকুন যে টার্মিনালের ( xterm) এটির সাথে সামান্য সম্পৃক্ততা রয়েছে (এটি প্রদর্শন করার জন্য যা বলা হয়েছে তা প্রদর্শন ব্যতীত)।

এবং প্রতি প্রক্রিয়া এবং প্রতি টার্মিনাল ডিভাইসে কেবলমাত্র একটি অধিবেশন থাকতে পারে। একটি অধিবেশনটিতে একটি নিয়ন্ত্রণকারী টার্মিনাল সংযুক্ত থাকতে পারে তবে তা করতে হবে না (সমস্ত সেশন টার্মিনাল ছাড়াই শুরু হয় যতক্ষণ না তারা একটি খুলবে)। xterm, আপনার শেলটি কার্যকর করতে প্রক্রিয়ায় এটি সাধারণত একটি নতুন অধিবেশন তৈরি করে (এবং সেই টার্মিনালটি যেখানে আপনি xtermযদি চালু করেন তবে সেটিকে আলাদা করে দেবে ), সেই নতুন /dev/pts/xটার্মিনাল ডিভাইসটিকে নতুন অধিবেশনটিতে সংযুক্ত করে এটি প্রসারিত নতুন খুলুন । এরপরে এটি আপনার শেলটিকে সেই প্রক্রিয়াতে কার্যকর করবে, সুতরাং আপনার শেলটি সেশন লিডার হয়ে যাবে। আপনার শেল বা session অধিবেশনের কোনও ইন্টারেক্টিভ শেল সাধারণত প্রক্রিয়া গ্রুপগুলির সাথে এবং tcsetpgrp()এই টার্মিনালের জন্য অগ্রভাগ এবং পটভূমির কাজগুলি সেট করতে জাগ্রত করবে।

টার্মিনাল ডিভাইসে টিটি শৃঙ্খলা (সিরিয়াল বা পিটিআই) দিয়ে কোন তথ্য সংরক্ষণ করা হয় , sttyকমান্ডটি সাধারণত এটি প্রদর্শন করে এবং পরিবর্তন করে। সমস্ত শৃঙ্খলা কনফিগারেশন: টার্মিনাল স্ক্রিন আকার, স্থানীয়, ইনপুট আউটপুট পতাকা, বিশেষ অক্ষরের জন্য সেটিংস (যেমন ^ সি, ^ জেড ...), ইনপুট এবং আউটপুট গতি (ptys এর জন্য প্রাসঙ্গিক নয়)। যে অনুরূপ tcgetattr()/ tcsetattr()ফাংশন যা লিনাক্স মানচিত্রে TCGETS/ TCSETSioctls, এবং TIOCGWINSZ/ TIOCSWINSZস্ক্রিন সাইজ জন্য। আপনি তর্ক করতে পারেন যে বর্তমান পূর্বভূমি প্রক্রিয়া গোষ্ঠীটি টার্মিনাল ডিভাইসে ( tcsetpgrp()/ tcgetpgrp(), TIOC{G,S}PGRPioctls) বা বর্তমান ইনপুট বা আউটপুট বাফারে সঞ্চিত অন্য তথ্য ।

নোট করুন যে টার্মিনাল ডিভাইসে সজ্জিত স্ক্রিন আকারের তথ্য বাস্তবতা প্রতিফলিত করতে পারে না। টার্মিনাল এমুলেটরটি সাধারণত উইন্ডোটি পুনরায় আকার দেওয়ার সময় এটি (মাস্টার আকারের একই আইওসিটিএল মাধ্যমে) সেট করে দেবে, তবে কোনও অ্যাপ্লিকেশন দাসের পাশে আইওসিটিএল কল করলে বা পুনরায় আকার প্রেরণ না করা হলে এটি সিঙ্ক থেকে বেরিয়ে যেতে পারে case একটি এসএসএস সংযোগের ক্ষেত্রে যা উদাহরণস্বরূপ sshdযদি তা sshউপেক্ষা করে থাকে তবে অন্য একটি পেটি তৈরি হয় SIGWINCH) কিছু টার্মিনালগুলিকেও পালানোর ক্রমগুলির মাধ্যমে তাদের আকার জিজ্ঞাসা করা যেতে পারে, সুতরাং কোনও অ্যাপ্লিকেশন সেভাবে এটি জিজ্ঞাসা করতে পারে এবং সেই তথ্যের সাথে লাইন শৃঙ্খলা আপডেট করতে পারে।

আরও বিশদগুলির জন্য, আপনি উদাহরণস্বরূপ দেবিয়ান termiostty_ioctlম্যান পৃষ্ঠাতে একবার দেখতে পারেন ।

অন্যান্য লাইনের শৃঙ্খলাগুলির সাথে খেলতে:

  1. সিউডো-টার্মিনাল দিয়ে একটি মাউস অনুকরণ করুন:

    socat pty,link=mouse fifo:fifo
    sudo inputattach -msc mouse # sets the MOUSE line discipline and specifies protocol
    xinput list # see the new mouse there
    exec 3<> fifo
    printf '\207\12\0' >&3 # moves the cursor 10 pixels to the right
    

    উপরে, পিটিটির মাস্টার সাইডটি নামী পাইপ ( fifo) এ সকেট দ্বারা সমাপ্ত হয় । আমরা সেই ফিফোটিকে এমন একটি প্রক্রিয়াতে (শেল) সংযুক্ত করি যা 0x87 0x0a 0x00 লিখে থাকে যা মাউস সিস্টেমের প্রোটোকলের অর্থ no button pressed, delta(x,y) = (10,0)। এখানে, আমরা (শেল) একটি টার্মিনাল অনুকরণ করছি না, তবে একটি মাউস, আমরা প্রেরিত 3 বাইট টার্মিনাল ডিভাইস থেকে একটি অ্যাপ্লিকেশন দ্বারা (সম্ভাব্য রূপান্তরিত) পড়তে হবে না ( mouseউপরে এটি socatকোনও /dev/pts/xডিভাইসের দ্বারা তৈরি একটি সিমলিংক ) , তবে মাউস ইনপুট ইভেন্ট হিসাবে ব্যাখ্যা করতে হবে।

  2. একটি SLIP ইন্টারফেস তৈরি করুন:

    # on hostA
    socat tcp-listen:12345,reuseaddr pty,link=interface
    # after connection from hostB:
    sudo ldattach SLIP interface
    ifconfig -a # see the new interface there
    sudo ifconfig sl0 192.168.123.1/24
    
    # on hostB
    socat -v -x pty,link=interface tcp:hostA:12345
    sudo ldattach SLIP interface
    sudo ifconfig sl0 192.168.123.2/24
    ping 192.168.123.1 # see the packets on socat output
    

    উপরে, সিরিয়াল ওয়্যারটি socatহোস্টএ এবং হোস্টবি-এর মধ্যে টিসিপি সকেট হিসাবে অনুকরণ করা হয় । এসএলআইপি লাইন শৃঙ্খলা ইন্টারফেসে বিতরণের জন্য এসআইএলপি এনপ্যাপুলেটেড আইপি প্যাকেট হিসাবে সেই ভার্চুয়াল লাইনের উপরে বিনিময় করা বাইটগুলি ব্যাখ্যা করে sl0


1
এটি সেরা উত্তর। আমি এটিকে সঠিক হিসাবে চিহ্নিত করি এবং এটিকে উজ্জীবিত করি। আপনি কি পিটিএস স্টোর তথ্য সম্পর্কিত শেষ অংশ যুক্ত করতে পারেন? এই পৃষ্ঠাটি অনুসারে (টিটিওয়াই ডিভাইসটি কনফিগার করার জন্য অধ্যায়) , পিটিএস সারি সংখ্যা এবং লাইনের সংখ্যার মতো মান সংরক্ষণ করে store এগুলি কি অন্য কোনও তথ্য যা এটি সঞ্চয় করে?
পিয়েরে-জিন

@ পিয়ার-জিন, আরও তথ্য যুক্ত করেছেন।
স্টাফেন চেজেলাস

যদিও আপনার উত্তরটি সন্তোষজনক নয়, আপনি কীভাবে আসলে একটি / দেব / পিটিএস / এম তৈরি করেন তার একটি সহজ উদাহরণটি আকর্ষণীয় হবে। আমি চেষ্টা করলাম cat /dev/ptmx &যা একটি নতুন pty খোলে, কিন্তু এরপরে কোনও প্রক্রিয়া নেই যা এর সাথে যুক্ত হতে পারি, আপনি কীভাবে এটি ব্যবহার করবেন? দ্বিতীয় আমি চেষ্টা করেছিলাম echo "1" >/dev/ptmx, কিন্তু এটি কিছুই করেনি ... কেন আমি এতে আগ্রহী? বোকাস প্রায়শই যখন কেউ দূরবর্তীভাবে সংযোগ করে ssh(উদাহরণস্বরূপ), আপনি পান PTY allocation request failedবা No controlling tty: open /dev/ttyত্রুটি, যা কাজের নিয়ন্ত্রণ রোধ করে। এগুলি আরও ভাল করে বুঝতে ভাল লাগবে।
not2qubit

@ user1147688, কীভাবে একটি pty তৈরি করবেন তা একটি আলাদা প্রশ্ন হবে। এটি ইতিমধ্যে এক সময়ে অনেক বেশি প্রশ্ন। তবে ptyবিশদগুলির জন্য আপনার ম্যান পৃষ্ঠাটি দেখুন।
স্টাফেন চেজেলাস

@ স্টাফেনচাজেলা ছোট ছোট স্পষ্টতা: ১. সুতরাং আপনি বলছেন যে টার্মিনালগুলিতে প্রবাহটি physical term---- tty---- এর মতো bash, এবং pty(m)---- tty---- pty(s)---- bashটার্মিনাল এমুলেটরগুলিতে? শারীরিক টার্মিনালটিতেও ttyশৃঙ্খলা অক্ষরের প্রতিধ্বনির জন্য দায়ী ছিল ? ২. এটি কি টার্মিনাল এমুলেটর প্রোগ্রাম যা ইনপুট পরিচালনা করতে কীবোর্ড / স্ক্রিনের সাথে সংযুক্ত হয়? ৩. আমি যা বুঝেছি তার অনুসারে আপনি বলেছিলেন যে ব্যাশ কমান্ড / সমস্ত টার্মিনাল ইনপুট লাইন বাফারিং ttyসিআই / ও ফাংশনগুলির আই / ও বাফারের পরিবর্তে লাইন শৃঙ্খলা দ্বারা করা হয় । এটা কি সঠিক?
ফোরামুলেটর

28

সম্পাদনা: এই উত্তরটি যেহেতু, আমি আমার ব্লগে একটি নিবেদিত নিবন্ধ লিখেছি , এমন লোকদের জন্য যারা আরও বিশদে আগ্রহী।


অনেক পড়ার পরে, এই আমি বুঝতে পেরেছি।

  • দাস অংশ বরাদ্দকরণ ছাড়াও পিটিএমএক্সের কোনও উদ্দেশ্য আছে? এটি কোনও ধরণের "বুদ্ধি" সরবরাহ করে, বা অনুকরণকৃত টার্মিনাল (উদাহরণস্বরূপ xterm) এর সাথে টার্মিনালের মতো আচরণ করার সমস্ত বুদ্ধি রয়েছে?

    /dev/ptmxদাস অংশ বরাদ্দ দেয় না : এটি "সিউডো টার্মিনাল মাস্টার অংশ" বরাদ্দ করে। / dev / ptmx মাস্টার সিউডো টার্মিনাল নয় : এটি সিউডো টার্মিনাল মাস্টার মাল্টিপ্লেক্সার । মাস্টার সিউডো টার্মিনাল ( উত্স ) বরাদ্দ করার সময় রেসের শর্ত এড়াতে এটি ইউনিক্স ৯৮ পিটিওয়াই মান দিয়ে তৈরি করা হয়েছে ।

    মাস্টার অংশ (ptm) ছদ্ম টার্মিনাল ফাইল সিস্টেমে প্রতিনিধিত্ব করা হয় না। এটি একটি ফাইল বর্ণনাকারী দ্বারা প্রতিনিধিত্ব করা হয়।

    ক্রীতদাস অংশ (পয়েন্ট) একটি ফাইল দ্বারা প্রতিনিধিত্ব করা হয় /dev/pts/Nযেখানে Nএকটি সংখ্যা।

    পয়েন্ট ধারাবাহিক কল মাধ্যমে ptm থেকে প্রাপ্ত হয় grandpt, unlockpt, ptsname। ( উত্স )

    পিটিএম ডিভাইস এবং লাইন সংস্করণের সাথে যোগাযোগের জন্য উত্সর্গীকৃত এআর ড্রাইভার প্রতিস্থাপন করে। সুতরাং এটি কোনও উপায়ে টার্মিনাল অনুকরণ করে না তবে লাইন সংস্করণের বৈশিষ্ট্য সরবরাহ করে এবং পিটিএসের সাথে ভিজ্যুয়ালাইজ এবং যোগাযোগের উপায় সরবরাহ করে। ( উত্স )

    একটি হার্ডওয়্যার ডিভাইসে সংযুক্ত কোন টিটিওয়াই কী ছিল তার একটি গ্রাফ এখানে Aur এর সাথে টিটিওয়াই যোগাযোগ

    এবং এখানে একটি পিটিএমের সাথে সংযুক্ত টিটিটির একটি গ্রাফ রয়েছে টিটিওয়াই যোগাযোগ পিটিএমের সাথে

    Ptm ফাইলটি pts এর চেয়ে বিভিন্ন Ioctl আর্গুমেন্ট (ISPTM, UNLKPT, TIOCREMOTE, TIOCSIGNAL) পরিচালনা করে।

  • এক্সটার্মকে কেন মাস্টার অংশের সাথে ইন্টারঅ্যাক্ট করতে হবে, কারণ এটি কেবল দাস অংশের স্টাডাউট এবং স্টিডিনকে এগিয়ে দেয়? এটি পিটিএস ফাইল থেকে সরাসরি লিখতে বা পড়তে পারে না কেন?

    প্রক্রিয়াগুলি ভার্চুয়াল ফাইলের (ক্রিয়াকলাপ, লিখন, ioctl ..) এর কাজগুলির মাধ্যমে ডিভাইসগুলির সাথে ইন্টারঅ্যাক্ট করে। ফাইলটি নিজেই উপস্থিত নেই এবং ড্রাইভার পড়ার বা লেখার পদ্ধতিগুলি কল করার সময় ক্রিয়াকলাপ করতে ফাইলটি ব্যবহার করে। (ড্রাইভার সম্পর্কিত তথ্যের জন্য আনেকেক্স দেখুন)

    একটি টিটিওয়াই এর সাথে যোগাযোগের জন্য একটি সুনির্দিষ্ট উপায় নির্ধারণ করে। প্রক্রিয়াগুলি ডিভাইস থেকে লিখতে এবং পড়তে পারে এবং কোন ধরণের টিটিওয়াই বাস্তবায়িত হয় নির্বিশেষে একই আচরণ প্রত্যাশা করে।

    • টার্মিনাল থেকে এন্ট্রি পড়তে প্রসেস দ্বারা ফাংশন ব্যবহার করা হয় used
    • টার্মিনালে আউটপুট প্রেরণে প্রক্রিয়া দ্বারা রাইটিং ফাংশন ব্যবহার করা হয়

    পিটিএস টিটিওয়াই ড্রাইভারের মতো আচরণ করে। এটি পড়ার এবং লেখার পদ্ধতিটি টিটিওয়াই ড্রাইভার আচরণ কার্যকর করতে ব্যবহৃত হয়। ডেটা প্রেরণের জন্য কোনও আসল ডিভাইস না থাকায় স্ট্রিমের জুড়ি তৈরি হয় এবং পিটিএম প্রবাহে পিটিএস দ্বারা প্রেরিত ডেটাগুলি পড়ার জন্য একটি রিড ফাংশন প্রয়োগ করে এবং স্ট্রিমে ডেটা প্রেরণের জন্য একটি লিখন ফাংশন প্রয়োগ করে যা উপলভ্য হবে will যখন pts এটি পড়বে।

    মনে রাখবেন যে কোনও ডিভাইসকে উপস্থাপন করা ফাইলটি কোনও ক্লাসিক ফাইল নয় এবং যদি ফাইলটিতে xtermকী লেখা হয়েছে তা যদি দেখতে চায় তবে এটি কেবল খোলামেলা বলা যায় না এবং এটি পড়তে পারে না, কারণ এখানে এই ফাংশনগুলির সম্পূর্ণ ভিন্ন আচরণ রয়েছে।

  • একটি সেশন আইডি সর্বদা একটি পিটিএস ফাইল এবং এর বিপরীতে সংযুক্ত থাকে? আমি কি একটি পিএস কমান্ড টাইপ করতে এবং একই / দেব / পিটিএস / এক্স এর জন্য 2 সেশনআইডি খুঁজে পেতে পারি?

    আমার মনে হয় না, সেশন আইডিটি প্রথম প্রক্রিয়া দ্বারা সংজ্ঞায়িত করা হয় যা পিটিএস সংযুক্ত করে (সাধারণত ব্যাশ করে), এবং আমি অন্য সেশন তৈরি করতে এবং একই পিটিএসের সাথে সংযুক্ত করার কোনও উপায় দেখি না। সম্ভবত একটি সরঞ্জাম socatকি এটি করতে পারে?

  • পিটিএস স্টোর করে অন্য কোন তথ্য? Xterm নিজেই সমস্ত ক্ষেত্র আপডেট করে না, বা পিটিএম তাতে কিছু "বুদ্ধি" যুক্ত করে?

    : পয়েন্ট টার্মিনাল এটা সাথে যোগাযোগ করা হয় সংঙ্ক্রান্ত 2 বিভাগ সংরক্ষণ Terminfoএবং Termcap। সাধারণত, অনেক টার্মিনাল এমুলেটর লাইব্রেরির উপর ভিত্তি করে থাকে যা তাদের জন্য টার্মক্যাপ তথ্য পরিচালনা করে (যা উদাহরণস্বরূপ একটি ভিটিএক্স 100 অনুকরণের জন্য সমস্ত দক্ষতার মান সরবরাহ করবে)। যেমন একটি লাইব্রেরির একটি উদাহরণ libvte হয় । সম্পাদনা করুন (দেখুন স্টেফেন চ্যাজেলাস মন্তব্য): টার্মিনাল ক্ষমতা pts দ্বারা সংরক্ষণ করা হয় না।

যোজন


টার্মক্যাপ এবং টার্মিনফো হ'ল টার্মিনাল বা টার্মিনাল এমুলেটর ক্ষমতা সম্পর্কে ডাটাবেস, tty বা pty ডিভাইসগুলির সাথে তাদের কোনও সম্পর্ক নেই।
স্টাফেন চেজেলাস

ঠিক আছে, আমি আমার উত্তর সম্পাদনা করব। মন্তব্যের জন্য ধন্যবাদ. আপনি যদি নিজের উত্তরটিতে পিটিএস সম্পর্কে এই তথ্য যুক্ত করতে পারেন তবে আপনি যদি এটি জানেন তবে (উদাহরণস্বরূপ পিটিএস স্ক্রিনের আকার সংরক্ষণ করে)?
পিয়েরে-জিন

6
এগুলি দুর্দান্ত ছবি। এগুলি তৈরি করতে আপনি কোন সফটওয়্যার ব্যবহার করেছেন?
গিলস

5
@ গিলিস আপনাকে ধন্যবাদ। আমি ওপেন-সোর্স ভেক্টর গ্রাফিক্স সম্পাদক ইনসকেপ দিয়ে এগুলি করেছি । এই ধরণের গ্রাফিক্স করার সম্ভবত এটি সবচেয়ে কার্যকর উপায় নয় তবে আপনি যদি আগ্রহী হন তবে আমি এই ধরণের আইসোমেট্রিক অঙ্কন কীভাবে তৈরি করব সে সম্পর্কে একটি নিবন্ধ লিখেছিলাম
পিয়েরে-জিন

আমি মনে করি না আপনি কখনই একটি নিয়ন্ত্রণকারী টার্মিনালে দুটি সেশন সংযুক্ত করতে পারেন বা একটি সেশনে একাধিক নিয়ন্ত্রণকারী টার্মিনাল রাখতে দেওয়া যায়
炸鱼 薯条 德里克

9

এখানে কীভাবে sshdকাজ হয় সে সম্পর্কে আমি কিছু সময় আগে তৈরি করেছি scheme এটি লাইন শৃঙ্খলা এবং স্টাফগুলির পরিচালনা সম্পর্কে উদ্বেগ প্রকাশ করে না, তবে এটি কাদের সাথে ইন্টারঅ্যাক্ট করে তার একটি বাস্তব জীবনের চিত্র তুলে ধরেছে:

এখানে চিত্র বর্ণনা লিখুন


এই জন্য আপনাকে অনেক ধন্যবাদ. আমি এটি বের করার চেষ্টা করে 2 দিন অতিবাহিত করেছি। আমি শুধু ভাবছি যখন কোনও পিটিআই তাত্ক্ষণিক হয় না তখন কী হয়। স্টিডিনের অস্তিত্ব নেই, জরিমানা, তবে স্টাডআউট এবং স্ট্ডার কোথায় লেখা আছে?
ছোট্ট

@ Emmaculateur খুশি এটি আপনাকে সাহায্য করেছে। দুঃখিত, "যখন কোনও পিটিআই তাত্ক্ষণিক হয় না" আপনি কী বোঝাতে চেয়েছিলেন তা আমি বুঝতে পারি না। Pty যখন তাত্ক্ষণিক হয় না তার উদাহরণ দিতে পারেন?
বরিস বুর্কভো

1
"কোনও পিটিআই তাত্ক্ষণিক হয় না" এর অর্থ আপনি যখন এসএসএস চালান -Tতখন লোকটি বলে যে এটি ছদ্ম টার্মিনাল বরাদ্দকে অক্ষম করে। যেমন: ssh -T emasculateur@localhost "sleep 10" তারপরে এটি ps aux|grep sleepদেখায়: emasculateur 21826 0.0 0.0 23032 3728 ? Ss 02:49 0:00 zsh -c sleep 10 সেই ক্ষেত্রে বাশ কোথায় লিখবে stdoutএবং stderr? আমি আশা করি আমার প্রশ্নটি বোধগম্য হয়।
ছোট্ট মানুষ

@ এমাস্কুলেটর এইচএম, এটি একটি ভাল প্রশ্ন, বোধগম্য, আমি কেবল এটি আগে ভাবিনি। আমার মনে হয় এটাই উপায়, আপনি কোনও প্রান্তিক টার্মিনাল ছাড়াই দূরবর্তী মেশিনে ডেমন হিসাবে আপনার প্রক্রিয়াটি শুরু করেন। আমার অনুমান যে এর স্ট্যান্ডার্ড ইনপুট / আউটপুট / ত্রুটিটি কেবল /dev/nullএকটি সাধারণ ডিমন পছন্দ করতে পারে তবে নিশ্চিত নয়। আরও দেখুন: সার্ভারফল্ট
বোরিস বুর্কভ 11

@ এমাস্কুলেটর আমিও আপনার থেকে আলাদা কেস নিয়ে হোঁচট খেয়েছি: আপনার প্রক্রিয়াটি যদি টার্মিনালটি ব্যবহার করত তবে সেই টার্মিনালটি বন্ধ ছিল, স্টাডাউট / স্টিডিন পড়ার / লেখার প্রয়াসের পরে প্রক্রিয়াটি কার্নেলের কাছ থেকে সাইনআপ গ্রহণ করবে। এটি প্রায়শই চাকরিগুলিকে মেরে ফেলে, এসএসএসের মাধ্যমে nohupঅথবা screen/ ছাড়াই শুরু করে tmux
বোরিস বুর্কভ 11

0

man pts বলেছেন:

ফাইল / ডিভ / পিটিএমএক্স হ'ল একটি অক্ষর ফাইল যা প্রধান সংখ্যা 5 এবং অপ্রধান নম্বর 2, সাধারণত মোড 0666 এবং root.root এর মালিকের গোষ্ঠীর হয়। এটি সিউডো-টার্মিনাল মাস্টার এবং স্লেভ জুড়ি তৈরি করতে ব্যবহৃত হয়।

যখন একটি প্রক্রিয়া / dev / ptmx খোলে, এটি সিউডো-টার্মিনাল মাস্টার (পিটিএম) এর জন্য একটি ফাইল বর্ণনাকারী পায় এবং একটি সিউডো-টার্মিনাল স্লেভ (পিটিএস) ডিভাইস / dev / pts ডিরেক্টরিতে তৈরি করা হয়। / Dev / ptmx খোলার মাধ্যমে প্রাপ্ত প্রতিটি ফাইল বর্ণনাকারী একটি নিজস্ব PTM এর সাথে সম্পর্কিত নিজস্ব পিটিএস, যার পথটি ptsname (3) এ বর্ণনাকারী পাস করে খুঁজে পাওয়া যায়।

সিউডো-টার্মিনাল ক্রীতদাস খোলার আগে আপনাকে গ্র্যান্ট (3) এবং আনলকপ্ট (3) এ মাস্টার্সের ফাইল বর্ণনাকারী পাস করতে হবে।

সিউডো-টার্মিনাল মাস্টার এবং স্লেভ উভয়ই খোলা হয়ে গেলে, স্লেভ একটি ইন্টারফেসের সাথে প্রসেস সরবরাহ করে যা সত্য টার্মিনালের অনুরূপ।

স্লেভকে লিখিত ডেটা মাস্টার বর্ণনাকারীর উপর ইনপুট হিসাবে উপস্থাপন করা হয়। মাস্টারকে লেখা ডেটা ইনপুট হিসাবে স্লেভের কাছে উপস্থাপন করা হয়।

অনুশীলনে, সিউডো-টার্মিনালগুলি xterm (1) এর মতো টার্মিনাল এমুলেটরগুলি প্রয়োগ করার জন্য ব্যবহৃত হয়, যেখানে সিউডো-টার্মিনাল মাস্টার থেকে পড়া ডেটা প্রয়োগের মাধ্যমে একইভাবে ব্যাখ্যা করা হয় যে কোনও বাস্তব টার্মিনাল ডেটা ব্যাখ্যা করে এবং দূরবর্তী বাস্তবায়নের জন্য -লগিন প্রোগ্রামগুলি যেমন sshd (8), যেখানে সিউডো-টার্মিনাল মাস্টার থেকে পড়া ডেটাগুলি নেটওয়ার্ক জুড়ে একটি ক্লায়েন্ট প্রোগ্রামে প্রেরণ করা হয় যা টার্মিনাল বা টার্মিনাল এমুলেটরের সাথে সংযুক্ত থাকে।

সিউডো-টার্মিনালগুলি প্রোগ্রামগুলিতে ইনপুট প্রেরণের জন্যও ব্যবহার করা যেতে পারে যা সাধারণত পাইপগুলি (যেমন su (8), এবং পাসডাব্লুড (8)) থেকে ইনপুট পড়তে অস্বীকার করে।

সম্পর্কে /dev/pts/X indexing:

প্রতিটি এক্স একটি সেশন যা আপনি এটি খোলেন, সুতরাং ক্রীতদাসদের সূচীকরণ করা দরকার।

সম্পর্কে TeteType (/dev/ttyN):

এটি আসল কনসোল যেমন আপনার বুট সিস্টেম দ্বারা উত্পাদিত হয়েছে sysV

কেন ক্রীতদাস মাস্টারকে জোর দিয়েছিল: http://commons.wikimedia.org/wiki/File:Termios-script-diagram.png


আমি দুঃখিত, কিন্তু আপনি প্রশ্নের জবাব দেন নি। আমি ইতিমধ্যে ম্যান পৃষ্ঠাটি পড়েছি এবং এই গ্রাফটি দেখছি, তবে আচরণটি পরিষ্কার ছিল না। আলোকসজ্জার পরামর্শ হিসাবে আপনি কি প্রশ্নগুলি অনুসারে আপনার প্রতিক্রিয়া বাড়িয়ে দিতে পারেন?
পিয়েরে-জিন

শেষের জন্য দুঃখ
ফার্সিগাল্ফ

সিউডো-টিটিওয়াই সাবসিস্টেমটি ব্যবহার করার জন্য, মাস্টার সাইড ড্রাইভার / ডিভ / পিটিএমএক্স এবং এন সংখ্যার স্লেভ ড্রাইভারের জন্য একটি নোড ইনস্টল করা আবশ্যক (এন ইনস্টলেশন দ্বারা নির্ধারিত হয়)। স্লেভ ডিভাইসের নামগুলি / dev / pts / M হয় যেখানে এম-এর মান N-1 এর মাধ্যমে 0 থাকে। কোনও ব্যবহারকারী মাস্টার ডিভাইস (পিটিএম নামে পরিচিত) এর মাধ্যমে সিউডো-টিটিওয়াই ডিভাইসটি ব্যবহার করে যা ক্লোন ড্রাইভারের মাধ্যমে অ্যাক্সেস করা যায় master মাস্টার ডিভাইসটি ক্লোন ডিভাইস হিসাবে সেট আপ করা হয় যেখানে ক্লোন ডিভাইস এবং এর জন্য এর ডিভাইসের নম্বরটি প্রধান পিটিএম ড্রাইভারের জন্য ছোটখাটো ডিভাইস নম্বর হ'ল।
ফারসিগাল্ফ

হ্যাঁ আমি প্যান পাতা পড়েছি ....!
ফার্সিগাল্ফ

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.