numaralı telefondan, fopen()
numaralı aramaya geri döndüğümde. Üzerinde fsync(fd)
gibi arama yapmak için bir dosya tanıtıcı almam gerekiyor. Bir dosya tanıtıcısından dosya tanıtıcısı almak için işlev nedir?Dosya tanıtıcısını (FILE * fp) bir dosya tanıtıcısına (int fd) nasıl dönüştürebilirim?
cevap
Uygun işlev int fileno(FILE *stream)
'dur. <stdio.h>
numaralı belgede bulunabilir ve standart bir POSIX standardı değil, standart bir C.
Gerçekten de, gerçekten standart bir parçası ise, herhangi bir üstbilgi veya kitaplıktan söz etmeye gerek yoktur. C kütüphanesi. Bununla birlikte, standart değildir, bu yüzden en azından başlıktan bahsetmek mantıklı olabilir. – AnT
Standart C kütüphanesindeki işlevlere erişmek, en azından derleyiciniz prototipleri beklerse, üstbilgileri de dahil etmeyi gerektirir (Bu anlamda standart davranışın ne olduğunu asla hatırlamıyorum). Üstbilgiler olmadan, bir C dosyasının başında hiçbir isim tanımlanmaz. – Novelocrat
@Novelocrat: Ben demek istediğim bir şey yok. Ben sadece bir * standart * fonksiyon için uygun başlık ismini bulmak her zaman kolay olduğu anlamına geliyordu. Yani cevabın tam başlık adını belirtmek gerçekten kritik değildir. – AnT
fileno(FILE *)
Bir dosya tanıtıcı döndürse bile, stdio'nun arabelleğini atlamamaya ÇOK dikkat edin. Eğer arabellek verileri varsa (okuyup tekrar yazılmamış yazma), dosya tanımlayıcısından yazılan/yazdığınız yazılar beklenmedik sonuçlar verebilir.
fdopen(3)
Bunun özellikle arama yapan kullanıcılar için yararlı olduğunu düşünmüyorum ve bu durum, yazılandan bir ay önce OP'nin yorum bölümünde yanıtlanmıştır. Bu, gerçek bilginin aksine bir mantıksal açıklamadır. – kevr
- 1. Bash'de adlandırılmış bir dosya tanıtıcısına nasıl yazılır?
- 2. Bir DOSYA işaretçisini temel dosya tanıtıcısını kapatmadan kapatın
- 3. Python'da bir dosya tanıtıcısına yerel yeni satır karakteri nasıl yazılır?
- 4. Bash'ta bir dosya tanıtıcısını belirtmek için değişken nasıl kullanılır?
- 5. Dosya arasındaki fark nedir: /, file: //, file: ///
- 6. Uyarılar olmayan UTF dosya tanıtıcısına basarken
- 7. Bourne kabuğundaki bir dosya tanıtıcısına komutun çıkışını nasıl yakalarım?
- 8. Dosya adı, dosya adı olmadan nasıl kurtulur?
- 9. `FILE *` erişim kipini alabilir miyim?
- 10. Dosya tanıtıcısından FILE * akışı nasıl alınır?
- 11. AttributeError: 'int' nesnesinin öznesi yok 'fd'
- 12. Perl: Açık dosya tanıtıcısını bir program okumasına geçirin STDIN
- 13. İş parçacığıyla aynı epoll dosya tanıtıcısını paylaşmak tamam mı?
- 14. Bir çekirdek modülündeki bir dosya tanıtıcısından dosya adı nasıl alabilirim?
- 15. Çok işlemcili dosyada dosya tanıtıcısını devralma önleme lib
- 16. Bir dosya tanıtıcısını Windows'taki ktipler aracılığıyla bir C kütüphanesi işlevine geçirme
- 17. Yinelenen Dosya Pointer
- 18. Perl's File :: Temp? 'I nasıl kullanmalıyım?
- 19. Bir ulong'u nasıl pozitif int dönüştürebilirim?
- 20. Dosya tanıtıcısından dosya adı alın
- 21. Yapı FILE İç Üyeleri'ni bilmek istiyorum, en son olanlar
- 22. Bir IntPtr penceresi tanıtıcısını IWin32Window^
- 23. Dosya adında bir virgülle nasıl dosya okuyabilirim?
- 24. C++ içinde bir dosya okunamıyor
- 25. <input type = 'file'> içinde dosya konumunu nasıl gizleyebilirim?
- 26. Yay Bütünleşmesi: int-file: gelen-kanal-bağdaştırıcısı: filename-pattern
- 27. Dosya adını `FILE *` den almak için bir yol var mı?
- 28. Nasıl açmadan dosya sistemiyle bir dosya oluşturabilirim
- 29. Dize [] <int> listelerini nasıl dönüştürebilirim?
- 30. açık dosya bir unicode dosya adıyla mı?
Kendinden cevapları kullanın. – dmckee
Veya dosyayı açık (2) ile açabilir ve –
başından itibaren bir dosya tanıtıcıya sahip olabilirsiniz Ve tersi: [Bir dosya tanıtıcısından bir dosya tanıtıcısı nasıl alınır?] (Http://stackoverflow.com/ sorular/1941464/nasıl yapılır dosya-işaretçisi-bir-dosya-tanımlayıcı) –