কমান্ড প্রম্পট কীভাবে জানতে পারে কখন প্রস্থানের জন্য অপেক্ষা করতে হবে?


90

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

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

কমান্ড প্রম্পট কীভাবে জানতে পারে কখন প্রস্থানের জন্য অপেক্ষা করতে হবে, এবং কীভাবে এই আচরণটি সি # তে অনুকরণ করা যায়?


13
দুর্দান্ত প্রথম প্রশ্ন!
রোটেম

4
খুব বেসিক স্তরে, জিইউআই ভিত্তিক প্রোগ্রামগুলি বলা হয় এবং এক্সিকিউশনটি প্রম্পটে ফিরে আসে। এটি হতে পারে কারণ শেলটি কমান্ডের সাথে এটির সাথে যোগাযোগ করার প্রত্যাশা করে না?
শাহকাল্পেশ

উত্তর:


122

যদি অ্যাপ্লিকেশনটি একটি Win32 জিইউআই অ্যাপ্লিকেশন হয় তবে এটি কেবল চলবে এবং কমান্ড প্রম্পট এটি থেকে বেরিয়ে যাওয়ার জন্য অপেক্ষা করবে না।

অ্যাপ্লিকেশনটি যদি কনসোল অ্যাপ্লিকেশন হয় তবে এটি কমান্ড প্রম্পটে চলবে এবং কমান্ড প্রম্পটটি ফিরে পেতে আপনার এটি অপেক্ষা করতে হবে।

সম্পাদনা:

ঠিক আছে. মনে হচ্ছে আপনার প্রযুক্তিগত ব্যাখ্যা দরকার। আপনি যদি নিজের অ্যাপ্লিকেশনটিতে একই বৈশিষ্ট্যটি অনুকরণ করতে চান তবে আপনি এখানেIMAGE_OPTIONAL_HEADER EXE ফাইলগুলি পরীক্ষা করতে পারেন ।

ভিতরে IMAGE_OPTIONAL_HEADER, আছে:

 WORD                 Subsystem;

If SubSystem == 0x02 এর অর্থ এটি একটি জিইউআই অ্যাপ্লিকেশন।

If SubSystem == 0x03 এর অর্থ এটি একটি কমান্ড প্রম্পট অ্যাপ।

সম্পাদনা 2:

আপনি যদি এটি কার্যক্রমে দেখতে চান:

  1. Http://www.ntcore.com/exsuite.php ডাউনলোড করুন

  2. আপনার ডেস্কটপে ক্যালক.এক্সে বা নোটপ্যাড.এক্সপি অনুলিপি করুন

  3. সিএফএফ এক্সপ্লোরারে অনুলিপি করা ক্যালক.এক্সে খুলুন

  4. এনটি হেডার -> ptionচ্ছিক শিরোনামে নেভিগেট করুন

  5. সাবসিস্টেম 0x002 থেকে 0x003 এ পরিবর্তন করুন

  6. এটি সংরক্ষণ করুন

এখন নতুন সংশোধিত ক্যালক চালান এবং আপনি কমান্ড প্রম্পটটি এটি সমাপ্ত হওয়ার জন্য অপেক্ষা করবেন।


4
@ সুধাকর টিলাপুদি, আপনাকে স্বাগতম, আমি আরও বিশদ সহ উত্তরটি আপডেট করেছি, আশা করি এটি আরও ব্যাখ্যা করবে।
72DFBF5B A0DF5BE9

4
সত্যিই তথ্যমূলক এটি আবার আমাকে পুনর্সিন্যাসের জন্য আপনাকে ধন্যবাদ :)
সুধাকর টিলাপুদি

8

কমান্ড প্রম্পট থেকে ডিফল্ট হ'ল জিইউআই প্রোগ্রামকে একটি পৃথক প্রক্রিয়া / কাঁটাচামচ তৈরি করে। তবে আপনি আপনার কমান্ড প্রম্পট / শেল স্ক্রিপ্টের সাথে ইনপল নোটপ্যাড (বা অন্যান্য জিইউআই প্রোগ্রাম) চালাতে পারেন:

start /w notepad.exe

এইভাবে, কমান্ড প্রম্পট / শেল স্ক্রিপ্ট কেবল নোটপ্যাড.এক্সই প্রক্রিয়াটি সমাপ্ত হওয়ার পরে অবিরত থাকে।

আশা করি এটি সাহায্য করবে, ডাব্লু


3

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

সুতরাং, কমান্ডটি notepadকেবল নোটপ্যাড অ্যাপ্লিকেশন শুরু করে এবং প্রয়োগের নিয়ন্ত্রণ ছেড়ে দেয় leaves যদিও, কমান্ডটি প্রম্পটের ipconfigএকটি ডোমেনের অধীনে চলে (এটি কোনও অ্যাপ্লিকেশন ডোমেন নয় )।

অত্যন্ত সাধারণকরণের জন্য, আপনি যখন Process.Startনিজের সি # সমতলে ব্যবহার করবেন, অপেক্ষা করবেন না। এটি যাইহোক না।

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