সরাসরি লেখার একই প্রভাব / আচরণ সহ একটি চলমান প্রক্রিয়াটির স্টিডিনকে লিখুন


8

এই পোস্টটি কেবল আমার প্রশ্নের আংশিক উত্তর দেয়। আমার সমস্যাটি হ'ল / proc ফাইল সিস্টেমে প্রসেসের FD ব্যবহার করে চলমান প্রক্রিয়াটির স্টিডিনে লেখার একই প্রভাব হয় না।

সমস্যা:

  1. 10000 বন্দরে শুনতে এনসি শুরু করুন (এই প্রক্রিয়াটিকে আরও এনসি 1 বলা হয়)

    nc -l 10000
    
  2. শ্রোতা এনসি-তে চিঠি পাঠানোর জন্য অন্য এনসি শুরু করুন (এটি এনসি 2 হবে)

    nc localhost 10000
    
  3. এনসি 2 তে স্টিডিনকে লিখুন

    echo "some chars here" >> /proc/[PID-nc-2]/fd/0
    

সমস্যা: "কিছু অক্ষর এখানে" শ্রোতা এনসি (এনসি 1) এ পাবেন না, তবে এনসি 2 এর কনসোলে প্রদর্শিত হবে।

প্রশ্ন: কেন এবং কেন এটি কাজ করা সম্ভব?

উত্তর:


11

এটি আপনার প্রত্যাশার মতো কাজ করে না কারণ /proc/<PID>/fd/0পাইপ নয়। যদি আপনি প্রেরণকারীটির সাথে স্টিডিনটি পাইপের সাথে সংযুক্ত করেন তবে এটি কাজ করবে

গ্রহণকারী হোস্টে

nc -l 10000

প্রেরণকারী হোস্টে

mkfifo my.fifo
cat >my.fifo &
cat my.fifo | nc remotehost.tld 10000

এখন তুমি পার

echo "Hello World" >my.fifo
myprog >my.fifo

মনে রাখবেন যে cat >my.fifoফিফোটি খোলা রাখতে হবে অন্যথায় একটি ইওএফ প্রেরণ হয়ে যায় এবং সংযোগ অকালে বন্ধ হয়ে যায়। সংযোগটি বন্ধ করতে আপনার বিড়াল প্রক্রিয়াটি খসড়াতে হবে যা ফিফোর উন্মুক্ত রয়েছে।


খুব উপকারী! আমার ক্ষেত্রে এটি প্রকৃতপক্ষে কোনও প্রক্রিয়াটির সাথে যোগাযোগ করা সহজ করেছে কারণ ফিফো পারম কোনও সাধারণ ব্যবহারকারীকে সুডোনে স্ক্রিপ্টকে প্রভাবিত করতে পারে।
natevw

1

আপনি যে লিঙ্কটি পোস্ট করেছেন তার উত্তরে যেমন বলা হয়েছে, আপনাকে লিখতে হবে /proc/pid/fd/0, না /proc/pid/fd/1


1
আমি আমার প্রশ্ন সংশোধন করেছি। তবে যাইহোক: আমি উভয়ই / এফডি / 0 এবং / এফডি / 1 চেষ্টা করেছিলাম। প্রশ্নটি রয়ে গেছে ...
জিও

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