2010-08-02 17 views
12

İşlemimin yapılıp yapılmadığını belirleyen bir standart (ish) POSIX yolu var mı (Bunu şu anda Ruby komut dosyası olarak yazıyorum; ancak Node.js ve ISO C komut satırı uygulamaları dahil olmak üzere birden çok ortam için merak ediyorum) etkileşimli bir uçbirimde, başka bir araçtan cron ya da yürütmenin tersi olarak çalıştırılıyor, ya da… vb.İşlemimin etkileşimli olarak yürütülüp yürütülmediğini nasıl belirleyebilirim?

Özellikle, belirli durumlarda kullanıcı girişi kazanmak gerekiyor ve bu belirlenebilir derecede olup olmadığını ölümcül başarısız gerek mümkün değildir (yani cron tarafından yürütülüyor.) Bir ortam değişkeni ile yapabilirsiniz ama ben Yapabilirsem daha standart bir şeyi tercih ederim.

+2

Buraya pencereler arayanlar için, etkileşimli olmayan işlemler için başarısız olacak win için System.Environment.UserInteractive. Net veya GetUserObjectInformation for try deneyin. – Mitch

+0

Bunu gerçek bir cevap olarak ekleyebilir ve ondan daha fazla itibar kazanmış olabilirsiniz. (= – ELLIOTTCABLE

cevap

13

Bunu kontrol etmek için her zaman $stdout.isatty kullanıyorum. Diğer yaklaşımlar, ENV['TERM'] değerini kontrol etmeyi veya ruby-terminfo gemini kullanmayı içerebilir.

+1

'isatty' ruby ​​IO sınıfının bir parçası gibi görünüyor: http://ruby-doc.org/core-2.2.2/IO.html#method-i-isatty – akostadinov

4

AFAIK, en yakın olacaksınız isatty(). Ancak sayfanın kendisi gibi, hiçbir şey bir insanın terminali kontrol ettiğini garanti etmiyor.

İlgili konular