簡體   English   中英

XOpenDisplay 返回顯示,但將 errno 設置為 11

[英]XOpenDisplay return display, but set errno to 11

我有一個 function,它打開 X11 顯示,做一些事情,然后關閉它。 我使用 errno 來捕獲整個代碼中的錯誤。 經過一段時間的 debuff 我了解到,即使 XOpenDisplay 返回實際指針(不是 NULL),errno 在這個 function 中設置為 11。

int
take_screenshot()    
{
  /* Get display */
  Display *display = XOpenDisplay(NULL);

  /* XOpenDisplay may set errno to 11
   * even though display is not NULL
   */
  if (!display)
  {
    fprintf(stderr, "Error opening display: %s", strerror(errno));
    return 1;
  }
  XCloseDisplay(display);
  return 0;
}

如果在if statement后僅添加errno = 0 ,它工作正常,但這看起來是個壞主意。 同樣在手冊頁中,它說 errno initial state 是平台相關的,但我檢查了一下,在調用XOpenDisplay之前它的值為 0。 先感謝您!

正如@Some_programmer_dude 提到的,我誤解了errno ,我將其用作錯誤指示器,所以我應該簡單地檢查文檔並僅在NULL檢查后使用errno

暫無
暫無

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

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