Rasgele bir dosya tanıtıcısı verildiğinde, engellenmiyorsa engellemeyi engelleyebilir miyim? Öyleyse nasıl?c, Nasıl bir dosya tanıtıcı engelleme yapmak için?
9
A
cevap
11
bir süre geçti ben C ile oynanan, ancak bir dosya tanımlayıcısı bayrakları değiştirmek için fcntl() işlevini kullanabilirsiniz beri:
#include <unistd.h>
#include <fcntl.h>
// Save the existing flags
saved_flags = fcntl(fd, F_GETFL);
// Set the new flags with O_NONBLOCK masked out
fcntl(fd, F_SETFL, saved_flags & ~O_NONBLOCK);
7
ben sadece O_NONBLOCK
bayrak dönerse olmayan ayar beklenebilir dosya tanıtıcıyı varsayılan kipte, bloke eden varsayılan moda:
/* Makes the given file descriptor non-blocking.
* Returns 1 on success, 0 on failure.
*/
int make_blocking(int fd)
{
int flags;
flags = fcntl(fd, F_GETFL, 0);
if(flags == -1) /* Failed? */
return 0;
/* Clear the blocking flag. */
flags &= ~O_NONBLOCK;
return fcntl(fd, F_SETFL, flags) != -1;
}
İlgili konular
- 1. Dosya tanıtıcı sızıntısı örneği?
- 2. Golang bozuk dosya tanıtıcı
- 3. C# dinleyicisi tanıtıcı
- 4. Dosya yollarının bir listesini yapmak için Anahtar sözcük nasıl kullanılır
- 5. C# kodu async yönteminde engelleme
- 6. Tanıtıcı C++: Dizeleri bir dosya satırındaki basamaklardan ayırmak ve bu rakamları toplamak
- 7. Bash'ta bir dosya tanıtıcısını belirtmek için değişken nasıl kullanılır?
- 8. MATLAB- bir işlev tanıtıcı parametresini bir tanıtıcı olarak başka bir işleve geçirme
- 9. Android: sürekli SQL eklentileri için engelleme veya engelleme kuyruğu?
- 10. Vim'in bir değişikliği hatırlamasını engelleme
- 11. RestTemplate POST - tanıtıcı yanıtı
- 12. C++ pthread engelleme kuyruğu kilitlenme (Bence)
- 13. C: Bir Dosya için Güvenli Oturum Açma
- 14. C#: CancellationToken engelleme yöntemini iptal etmiyor
- 15. android camera2 tanıtıcı zum
- 16. PHP - Kayıtsız kullanıcılar için erişim engelleme
- 17. Delphi - bildirilmemiş tanıtıcı: LOCALE_SYSTEM_DEFAULT
- 18. Java'da engelleme
- 19. Android: ThreadSafeClientConnectionManager kullanarak bir engelleme okuma/yazma için SSL soketleri için bir zaman aşımı nasıl ayarlayabilirim?
- 20. OpenProtocol döndürdü 2 Bir tanıtıcı açmak için OpenProtocol kullandığımda
- 21. Bir STA iş parçacığında birden çok tanıtıcı için WaitAll desteklenmiyor
- 22. Makro genişletmeyi engelleme
- 23. Dosya tanıtıcısını (FILE * fp) bir dosya tanıtıcısına (int fd) nasıl dönüştürebilirim?
- 24. C# çözümdeki bir dosya yolunu nasıl belirlenir?
- 25. Sabit boyutlu tanıtıcı ile QScrollBar nasıl oluşturulur?
- 26. BufferedInputStream ve Engelleme
- 27. Bash'de adlandırılmış bir dosya tanıtıcısına nasıl yazılır?
- 28. C++ içinde bir dosya okunamıyor
- 29. C için isatty() nedir?
- 30. Makro tanımı yapmak için bir argüman olarak nasıl iletilebilir?
Evet, kabul edilen yöntem budur. ~ O_NONBLOCK ile fcntl yapmaya iyi cevap ve güzel, ters yaklaşım. :) – BobbyShaftoe