[英]Is IOCTL return value
我遇到了以下代碼。
if((error = ioctl(get_card_fd(card_ref), CARD_SETVERSION, &context)))
{
return EXIT_FAILURE;
}
我的問題如下:
以下表達式如何評估為正/ TRUE?
(error = ioctl(get_card_fd(card_ref), CARD_SETVERSION, &context))
對於ioctl的非零返回值,上面的表達式如何評估為true?
開發人員可以開發處理此ioctl
請求的驅動程序,以獲得成功返回的值。 通常, 0
表示一切正常。 此約定已在UNIX系統中使用了很長時間。
無論如何,請閱讀有關此特定文件描述符的文檔,並了解此文件描述符返回處理的特定系統調用的值。
至於第二個問題, =
運算符在賦值后返回一個新的變量值。 因此,如果賦值運算符返回非零值,則表達式的返回值(在我們的示例中為ioctl
int
)將隱式計算為true
。
大多數方式,非零負值意味着錯誤執行。 在某些情況下,UNIX系統調用會在read
或write
系統調用時返回正值。 在read
和write
系統調用的情況下,它們的正返回值表示讀取或寫入的字節數。
它可能有ioctl
這可能意味着執行去正常返回正值,我們回到一切的這個特殊的文件描述符代表的一些國家 。 再次仔細閱讀您的文檔。
所以,在下面的代碼中:
if (error = ioctl(get_card_fd(card_ref), CARD_SETVERSION, &context)) {
return EXIT_FAILURE;
}
非零值被評估為true
,我們輸入該條件代碼塊。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.