簡體   English   中英

IOCTL是否返回值

[英]Is IOCTL return value

我遇到了以下代碼。

if((error = ioctl(get_card_fd(card_ref), CARD_SETVERSION, &context)))
{
      return EXIT_FAILURE;
}

我的問題如下:

  1. IOCTL成功時總是返回“0”嗎?
  2. 以下表達式如何評估為正/ TRUE?

     (error = ioctl(get_card_fd(card_ref), CARD_SETVERSION, &context)) 

對於ioctl的非零返回值,上面的表達式如何評估為true?

開發人員可以開發處理此ioctl請求的驅動程序,以獲得成功返回的值。 通常, 0表示一切正常。 此約定已在UNIX系統中使用了很長時間。

無論如何,請閱讀有關此特定文件描述符的文檔,並了解此文件描述符返回處理的特定系統調用的值。

至於第二個問題, =運算符在賦值后返回一個新的變量值。 因此,如果賦值運算符返回非零值,則表達式的返回值(在我們的示例中為ioctl int )將隱式計算為true

大多數方式,非零負值意味着錯誤執行。 在某些情況下,UNIX系統調用會在readwrite系統調用時返回正值。 readwrite系統調用的情況下,它們的正返回值表示讀取或寫入的字節數。

它可能有ioctl這可能意味着執行去正常返回正值,我們回到一切的這個特殊的文件描述符代表的一些國家 再次仔細閱讀您的文檔。

所以,在下面的代碼中:

if (error = ioctl(get_card_fd(card_ref), CARD_SETVERSION, &context)) {
        return EXIT_FAILURE;
}

非零值被評估為true ,我們輸入該條件代碼塊。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM