كيف يمكنني معرفة ما إذا كان متصلا STDIN إلى محطة في بيرل؟

StackOverflow https://stackoverflow.com/questions/528781

  •  22-08-2019
  •  | 
  •  

سؤال

وكيف يمكنني معرفة ما إذا كان متصلا 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

ولكن ليست جميلة جدا ...

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top