কিভাবে স্টিডিন ইনপুট শেষ সংকেত


82
  1. বাশে, আমি শিখেছি যে এখানে ডকুমেন্ট দ্বারা শেষ সংকেতটি পরিবর্তন করা যেতে পারে। তবে ডিফল্টরূপে আমি কীভাবে স্টিডিন ইনপুটটির সংকেত দিতে পারি?
  2. আমি দেখতে পেয়েছি যে বিড়াল এবং চারটেটের সাহায্যে, তাদের স্টিডিন ইনপুটগুলি সিটিআর + ডি দ্বারা সমাপ্ত হিসাবে সংকেত দেওয়া যেতে পারে। তবে আমার মনে আছে যে Ctrl + d এবং Ctrl + c একটি চলমান কমান্ডের সমাপ্তি সমাপ্তির সমান। তাহলে আমি কি ভুল করছি?

উত্তর:


114

Ctrl+D, যখন টার্মিনালে একটি লাইনের শুরুতে টাইপ করা হয়, ইনপুটটির শেষটি চিহ্নিত করে। এটি ইউনিক্স অর্থে কোনও সংকেত নয়: যখন কোনও অ্যাপ্লিকেশন টার্মিনাল থেকে পড়তে থাকে এবং ব্যবহারকারী চাপ দেয় Ctrl+D, তখন অ্যাপ্লিকেশনটি জানানো হয় যে ফাইলটির সমাপ্তি পৌঁছেছে (ঠিক এটি যদি কোনও ফাইল থেকে পড়তে থাকে এবং পাস করেছিল তবে শেষ বাইট))

Ctrl+Cএকটি সংকেত পাঠায়, SIGINT । ডিফল্টরূপে সিগিন্ট (বিঘ্নিত সংকেত) অগ্রভাগের অ্যাপ্লিকেশনটিকে হত্যা করে, তবে অ্যাপ্লিকেশনটি সিগন্যালটি ধরে ফেলতে পারে এবং কিছু ভিন্ন উপায়ে প্রতিক্রিয়া দেখাতে পারে (উদাহরণস্বরূপ, শেল নিজেই সিগন্যালটি ধরে এবং আপনি যে লাইনের সাথে টাইপ করতে শুরু করেছেন তা বাতিল করে দেয়, তবে তা হয় না ' প্রস্থান করার সময় এটি একটি নতুন প্রম্পট দেখায় এবং একটি নতুন কমান্ড লাইনের জন্য অপেক্ষা করে)।

আপনি শেষ অফ ফাইল এবং সঙ্গে SIGINT সঙ্গে যুক্ত অক্ষর পরিবর্তন করতে পারেন sttyকমান্ড, যেমন stty eof aকরতে হবে aশেষ অফ ফাইল অক্ষর, এবং stty intr ^-SIGINT চরিত্র নিস্ক্রিয় করবে। এটি খুব কমই দরকারী।


ধন্যবাদ! না Ctrl+Dমানে Ctrl এবং রাজধানী ডি অথবা এটা কোন ব্যাপার না?
টিম

5
@ টিম: এটি আপনি চান এটি নিম্নতর ... রাজধানীগুলির সাথে কীবোর্ড কমান্ড লেখার প্রচলন আসে কারণ কীবোর্ডের লেবেলগুলি সর্বদা রাজধানীতে থাকে এবং বর্ণিত জিনিসটি কী সিকোয়েন্সটি প্রকৃত অক্ষর কোড যা প্রোগ্রামটি দেখে না not হ্যাঁ এটি কখনও কখনও বিভ্রান্তিকর হয়।
কালেব

@ কালেব: ধন্যবাদ! কীভাবে কী কী মূলধনটি নির্দিষ্ট করে? নাকি এরকম ঘটনা কি কখনও আছে?
টিম

@ টিম একটি টার্মিনালে, কী সংমিশ্রণগুলি Ctrl+Shift+Dএবং Ctrl+Dএকই বর্ণকে যেভাবেই প্রেরণ করুন (অক্ষর সংখ্যা 4, সাধারণত বলা হয় Ctrl+D)।
গিলস

2
@ টিম টার্মিনালটি সিটিআরএল + ডি পেয়েছে। এটি প্রোগ্রামটিতে কোনও চরিত্র প্রেরণ করে না। যা ঘটে তা হ'ল প্রোগ্রামটি যখন টার্মিনাল থেকে পড়ে, টার্মিনালটি এটি "এটি ফাইলের শেষ" বলে, একইভাবে যখন কোনও প্রোগ্রাম কোনও ডিস্ক ফাইলের শেষে পড়ার চেষ্টা করে। শেলটি মোটেই জড়িত নয়।
গিলস

23

আপনার দ্বিতীয় বিন্দুতে দুটি সম্পূর্ণ ভিন্ন জিনিস একসাথে।

  • Ctrl + C চলমান প্রক্রিয়াতে একটি কিল সংকেত প্রেরণ করে।
  • Ctrl + D ট্রান্সমিশন অক্ষরের একটি প্রেরণ প্রেরণ করে ।

আপনি পরের সন্ধান করছেন।


7
এখানে বিভ্রান্তির সম্ভাবনা: অ্যাপ্লিকেশন দৃষ্টিকোণ থেকে, কোনও আসল অক্ষর ^ D এর জন্য প্রেরণ করা হয়নি। যার অর্থ হ'ল অ্যাপ্লিকেশনটি read(2)স্কেল থেকে সেই চরিত্রটি গ্রহণ করে না ।
ulidtko
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.