আমি জিপিএস ডিভাইসে সংযুক্ত সিরিয়াল পোর্ট থেকে এনএমএ স্ট্রিং প্রেরণ করছি।
আমার বক্তব্যটি বর্ণনা করার জন্য একটি সরল অনুরোধ:
$ awk '{ print $0 }' /dev/ttyPSC9
GPGGA,073651.000,6310.1043,N,01436.1539,E,1,07,1.0,340.2,M,33.3,M,,0000*56
$GPGSA,A,3,28,22,09,27,01,19,17,,,,,,2.3,1.0,2.0*39
$GPRMC,073651.000,A,6310.1043,N,01436.1539,E,0.42,163.42,070312,,,A*67
GPGGA,073652.000,6310.1043,N,01436.1540,E,1,07,1.0,339.2,M,33.3,M,,0000*55
$GPGSA,A,3,28,22,09,27,01,19,17,,,,,,2.3,1.0,2.0*39
আমি যদি পরিবর্তে কোনও পাইপ থেকে পড়ার চেষ্টা করি তবে স্ট্রাউডে প্রেরণের আগে জিন্স ইনপুটটিকে বাফার করে।
$ cat /dev/ttyPSC9 | awk '{ print $0 }'
<long pause>
GPGGA,073651.000,6310.1043,N,01436.1539,E,1,07,1.0,340.2,M,33.3,M,,0000*56
$GPGSA,A,3,28,22,09,27,01,19,17,,,,,,2.3,1.0,2.0*39
$GPRMC,073651.000,A,6310.1043,N,01436.1539,E,0.42,163.42,070312,,,A*67
GPGGA,073652.000,6310.1043,N,01436.1540,E,1,07,1.0,339.2,M,33.3,M,,0000*55
$GPGSA,A,3,28,22,09,27,01,19,17,,,,,,2.3,1.0,2.0*39
আমি কীভাবে বাফারিং এড়াতে পারি?
সম্পাদনা : কাইল জোনস পরামর্শ দিয়েছিলেন যে বিড়াল তার আউটপুটটিকে বাফার করছে তবে তা ঘটছে বলে মনে হয় না:
$ strace cat /dev/ttyPSC9 | awk '{ print $0 }'
write(1, "2,"..., 2) = 2
read(3, "E"..., 4096) = 1
write(1, "E"..., 1) = 1
read(3, ",0"..., 4096) = 2
যখন আমি এটি সম্পর্কে চিন্তা করি: আমি ভেবেছিলাম যে কোনও প্রোগ্রাম টার্মিনালে লেখার সময় লাইন বাফারিং এবং অন্যান্য সমস্ত ক্ষেত্রে "নিয়মিত বাফারিং" ব্যবহার করে। তাহলে, বিড়াল কেন বেশি বাফার করছে না? সিরিয়াল বন্দর ইওএফ সিগন্যাল করছে? তাহলে বিড়ালকে কেন শেষ করা হচ্ছে না?