Kendi psuedo-shell'imi yazmak istiyorum ve güzel renkler almak istiyorum. Sanal TTY'leri okudum, ancak bir tane nasıl oluşturulacağı ya da bir alt işlemin nasıl yapılacağı konusunda çok pratik bilgiler bulamadı isatty(stdout) == 1
.Dosya isatty (3) yanıt verir
cevap
Aradığınız şey pseudoterminals, pseudo-ttys veya ptys olarak adlandırılır. Bunlar master/slave çiftlerinde var olup, benzer şekilde soket çiftlerine (boruların çift yönlü versiyonu; diğer ucunda yazılan bir uçtan diğerine okunabilir) davranırlar. kontrol süreçte, (muhtemelen /dev/pts/X
) köle adını almak için, sonra bir ana açmak için ptsname
posix_openpt
kullanın:
int master = posix_openpt(O_RDWR | O_NOCTTY);
grantpt(master); /* change ownership and permissions */
unlockpt(master); /* must be called before obtaining slave */
int slave = open(ptsname(master), O_RDWR | O_NOCTTY);
Her zamanki gibi, her fonksiyon başarısız olabilir, bu nedenle hata denetimi ekleyin. slave
fd artık slave cihazını ifade etmektedir. Standart çıkışı slave psödoterminaline ayarlamak için çocuk işleminde dup2(slave, STDOUT_FILENO)
kullanın; stdin ve stderr için benzer şekilde.
(. some Linux manpages yanlış posix_openpt
döner char *
Ayrıca fonksiyonların openpty
ailesi tarafından karışık belirtmektedirler dikkat edin; bu yalancı-uçbirim için kaldırıldı eski arabirim temsil eder.)
- 1. C için isatty() nedir?
- 2. Panel denetimi nasıl yanıt verir?
- 3. Oturum açma formu nasıl yanıt verir
- 4. Nodejs yanıt olarak dosya gönder
- 5. multiple annotate Toplam terim sayısı şişirilmiş yanıt verir
- 6. SCP verir Dosya ya da dizin bulunamadı
- 7. MongoDB sorgusu yanıt yerine 3 nokta döndürüyor
- 8. Dosya uzantısı PowerShell 3
- 9. http yanıt gövdesinden bir dosya indirin
- 10. Scikit'te bir ROC eğrisinin çizilmesi sadece 3 puan verir
- 11. Spring MVC 3 - 404 ile yanıt vermek ister misiniz?
- 12. İyonik 2'de bir HTTP POST çağrısı yapılması yasak yanıt verir
- 13. aşağıdaki verir Biçimlendirici
- 14. Yanıt kütüğü kullanma ExtJS
- 15. ValidateSchema, OverflowException değerini verir
- 16. Harita hibernate.MappingException verir: varlık
- 17. `UnicodeDecodeError verir: (128)
- 18. yineleme farklı op verir
- 19. jQuery unwrap ara verir
- 20. çocuktan üst div indisini verir
- 21. HttpListener yanıt akışı nasıl temizlenir?
- 22. Chrome'da yanıt üstbilgisini nasıl değiştiririm
- 23. - daima döndürür 200 yanıt
- 24. Python 3 Çevrimiçi tercüman/Kabuk
- 25. USPS Rate Calculator'dan yanıt
- 26. htaccess, belirli bir kullanıcıya erişim izni verir
- 27. Simple Http Yanıt
- 28. Sorgu, aynı sonucu birden çok kez verir
- 29. JSONP isteği, Angular uygulamasında 404 verir
- 30. Ajax Yanıt İletileri Çalışmadı
'ek olarak STDOUT_FILENO', aynı zamanda çocuğun STDIN_FILENO ve STDERR_FILENO'larına pty kölemini de yapamazsınız. – caf
Düzenlendi, teşekkürler. –
Harika cevap, teşekkürler! –