كيف يمكنني معرفة ما إذا كان متصلا STDIN إلى محطة في بيرل؟
سؤال
وكيف يمكنني معرفة ما إذا كان متصلا STDIN إلى محطة في بيرل؟
المحلول
if (-t STDIN) {
# stdin is connected
} else {
# stdin is not connected
}
وعادة ما تستخدم هذه بالتزامن مع -t STDOUT، لمعرفة ما إذا كان أنا على التوالي من قذيفة التفاعلية أو من كرون، لتمكين المزيد من الانتاج.
نصائح أخرى
وكنت قد تكون مهتمة في IO :: التفاعلية أيضا لمعرفة ما اذا كان يعتقد بيرل هو التفاعل مع المستخدم. ببساطة أن يكون متصلا إلى الكتابة البعيدة لا يعني أن المستخدم سوف نرى ما تفعله.
وحل واحد سيكون لاستخدام الكتابة البعيدة:
[root@server] ~> tty
/dev/pts/0
[root@server] ~> echo y | tty
not a tty
ولكن ليست جميلة جدا ...
لا تنتمي إلى StackOverflow