আমি কীভাবে একটি উপ-প্রসেসকে অন্যদের অনাহারে রোধ করব?


10

পরিষ্কারভাবে বলতে গেলে, আমি এমন কোনও কথা বলছি না যার জন্য ইম্যাকগুলি মাল্টিথ্রেড করা উচিত (যদিও এটি সম্ভবত এটি সমাধানও করে)। বংশবৃদ্ধি:

  1. ইমাস-কিউ # আমি চলমান 24.4.1
  2. একটি দ্বিতীয় ফ্রেম তৈরি করুন
  3. প্রথম ফ্রেমে ফিরে যান
  4. এমএক্স শেল
  5. এমএক্স-এর নতুন নামকরণ-অনন্যভাবে (আমরা পরে একটি দ্বিতীয় শেল তৈরি করতে যাচ্ছি)
  6. চলমান শুরু করুন: while true; do echo "hello world"; done
  7. দ্বিতীয় ফ্রেমে, এমএক্স শেল

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

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


1
আপনার প্রশ্নের সুনির্দিষ্ট উত্তর আমার কাছে নেই। যাইহোক, আমি start-processএকটি set-process-filterএবং এ ব্যবহার করতে চাই set-process-sentinel- এটি প্রক্রিয়া চলাকালীন আমাকে অন্য জিনিসগুলি করতে আমার আনন্দময় পথে যেতে দেয় - এমনকি আমি আমার আউটপুটটি মাঝে মাঝে *Messages*বাফারেও প্রেরণ করি insertযাতে আমার প্রতিধ্বনির ক্ষেত্রটি নিরবচ্ছিন্ন থাকে বা আমি ব্যবহার করি একটি ডেডিকেটেড প্রক্রিয়া আউটপুট বাফার (যদি প্রয়োজন হয়)। উদাহরণস্বরূপ, আমি একটি দীর্ঘ rsyncঅধিবেশন চালাতে পারি । একাধিক যুগপত / দীর্ঘায়িত করার চেষ্টা করার আমার কোনও অভিজ্ঞতা নেই start-process, সুতরাং আমি নিশ্চিত নই যে ইমাসগুলি কীভাবে তাদের সমস্ত কিছু পরিচালনা করবে।
আইনজীবি

2
হুঁ মজার আকর্ষণীয়। উভয় শেল ইনফিয়ারিয়র পৃথক প্রক্রিয়া এবং স্পষ্টতই ইমাকস এখনও ইস্যু ছাড়াই তার প্রধান কমান্ড লুপ প্রক্রিয়া করছে। তবে আমি সন্দেহ করি যখন এটি নিকৃষ্টতম এফডিগুলিতে পোল দেয় তবে এটি সর্বদা প্রথম শেলের মধ্যে কিছু খুঁজে পায় এবং দ্বিতীয় এফডি প্রক্রিয়াকরণে কখনই আসে না। আপনি যদি প্রথম শেলটিতে [1] এর সময়টি হত্যা করেন তবে দ্বিতীয় শেলটি আপনার প্রত্যাশা মতোই আসবে। এটি সম্ভবত ডেভ মেইলিং তালিকার জন্য একটি প্রশ্ন।
stsquad

আমার আর একটি সমস্যা আছে তবে এটি ফ্রেম সহ স্মাইলিয়ার
রিনিফ্রোগার

উত্তর:


2

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

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


1
এখানে সমস্যাটি দুর্ঘটনাক্রমে অসীম লুপটি লেখা শক্ত নয়। কমান্ড চলাকালীন আমি / ওআই কী করার পরিকল্পনা করি তা নিয়ে ভাবতেও পছন্দ করব না। ইমাস ব্যবহারের পুরো সুবিধাটি হ'ল সবকিছু ইতিমধ্যে একটি দুর্দান্ত সংরক্ষণ-সক্ষম বাফারে রয়েছে :)
জোসেফ গারভিন

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