मैं टर्म :: रीडलाइन :: जीएनयू का उपयोग कर रहा हूं और सिग्नल हैंडलिंग के साथ एक समस्या में भाग गया हूं। नीचे लिपि और स्क्रिप्ट को भेजे गए एक टीईआरएम सिग्नल को देखते हुए, टीईआरएम सिग्नल के लिए हैंडलर के बाद ट्रिगर नहीं किया गया है, एंटर कुंजी दबाया जाता है। टर्म :: रीडलाइन का उपयोग करना: पर्ल यह नहीं होता है।पर्ल टर्म :: रीडलाइन :: जीएनयू सिग्नल हैंडलिंग कठिनाइयों
मैंने पढ़ा है कि टर्म :: रीडलाइन :: जीएनयू का अपना आंतरिक सिग्नल हैंडलर है, लेकिन स्पष्ट रूप से मुझे उनके साथ काम करने के तरीके के नुकसान में है।
मैंने समीक्षा की है http://search.cpan.org/~hayashi/Term-ReadLine-Gnu-1.20/Gnu.pm#Term::ReadLine::Gnu_Variables rl_catch_signals चर को 0 पर सेट करने का प्रयास किया, लेकिन इससे मदद नहीं मिली। आदर्श रूप से, मैं जीएनयू सिग्नल हैंडलर के साथ काम करना चाहता हूं, लेकिन मैं उन्हें अक्षम करने के लिए भी व्यवस्थित हूं।
बिल्कुल विशिष्ट होने के लिए, मुझे एंटर कुंजी दबाए जाने के बजाय सिग्नल प्राप्त होने के बाद ट्रिगर करने के लिए TERM हैंडलर की आवश्यकता होती है।
कोई भी मदद या सलाह निश्चित रूप से सराहना की जाती है!
#!/usr/bin/perl
use strict;
use warnings;
use Term::ReadLine;
$SIG{TERM} = sub { print "I got a TERM\n"; exit; };
my $term = Term::ReadLine->new('Term1');
$term->ornaments(0);
my $prompt = 'cmd> ';
while (defined (my $cmd = $term->readline($prompt))) {
$term->addhistory($cmd) if $cmd !~ /\S||\n/;
chomp($cmd);
if ($cmd =~ /^help$/) {
print "Help Menu\n";
}
else {
print "Nothing\n";
}
}
मुझे आश्चर्य है कि यह एक बफरिंग समस्या है या नहीं। इस उत्तर से समाधान आज़माएं: http://stackoverflow.com/a/7603502/1791055 – titanofold
'/ \ S || \ n /' क्या करना है? :-) (आपके वास्तविक प्रश्न से संबंधित नहीं, मैंने अभी इसे देखा है।) ध्यान दें कि क्योंकि आपके दो पाइप के बीच कुछ भी नहीं है, रेगेक्स कुछ भी मेल खाएगा, इसलिए! ~ हमेशा झूठा होगा। – Tanktalus
ysth ने मुझे इस प्रश्न का उत्तर किसी अन्य पोस्ट में उत्तर देने में मदद की http://stackoverflow.com/questions/13332908/termreadline-i-need-to-hit-the-up-arrow-twice-to-retrieve-history इसे पूरी तरह से बाहर कर देता है टी के रूप में अनिवार्य: आर: जी डिफ़ॉल्ट रूप से addhistory करता है। मैं इसे हटा दूंगा। –