Bu ioctl
işlemcisini çalıştıran sürücüyü geliştiren geliştiriciye, başarı için hangi değerde geri dönmesi gerektiğini sorun. Genellikle, 0
her şeyin doğru gittiği anlamına gelir. Bu sözleşme, UNIX sistemlerinde uzun süre kullanılmıştır. Her neyse, bu dosya tanıtıcısıyla ilgili belgelerinizi okuyun ve bu dosya tanıtıcısı tarafından işlenen belirli sistem çağrılarının hangi değerlerini döndürdüğünü öğrenin.
İkinci soruya gelince, =
işleci, atama sonrasında yeni bir değişken değeri döndürür. Bu nedenle, döndürme değeri (bizim durumumuzda için ioctl
), dolaylı olaraktrue
, atanan işleç tarafından sıfır olmayan bir değer döndürülürse değerlendirilir.
negatif olmayan değerlerinin çoğu, hatalı yürütme anlamına gelir. Bazı durumlarda UNIX sistem çağrıları, read
veya write
sistem çağrıları yaptıkça pozitif değerler döndürür. read
ve write
sistemlerinde pozitif geri dönüş değerleri, okunan veya yazılan bayt sayısı anlamına gelir. Mümkün
o yürütme normalde gitti anlamına gelebilir ioctl
dönüş pozitif değere sahip ve biz bu özel bir dosya tanıtıcı açılımı ne olursa olsun bazı devlet döndürür. Bir kez daha belgelerinizi dikkatlice okuyun.
Yani, aşağıda kodu:
if (error = ioctl(get_card_fd(card_ref), CARD_SETVERSION, &context)) {
return EXIT_FAILURE;
}
sıfır olmayan bir değer true
için değerlendirilir ve kodun o koşullu blok girin.
1) Hayır. Bunu okuyun: http://man7.org/linux/man-pages/man2/ioctl.2.html 2) "ioctl" 0'dan farklı bir değer döndürürse "true" değerini değerlendirir. – AntonH
@AntonH Bir cevap olarak göndermelisiniz :) –
@JesusRamos Yapmalıyım, ama bu kadar kısa/hızlı bir cevap olduğu için, bunun bir yanıt israfı olduğunu düşünüyorum. Çok fazla itibarı özlüyorum: D – AntonH