Error handling 如何使Xlib打印错误消息,但不退出?

Error handling 如何使Xlib打印错误消息,但不退出?,error-handling,xlib,Error Handling,Xlib,“默认处理程序的操作是打印解释性消息并退出。” 此类信息的示例: X Error of failed request: BadWindow (invalid Window parameter) Major opcode of failed request: 12 (X_ConfigureWindow) Resource id in failed request: 0xc0007a Serial number of failed request: 140 Current s

“默认处理程序的操作是打印解释性消息并退出。”

此类信息的示例:

X Error of failed request:  BadWindow (invalid Window parameter)
  Major opcode of failed request:  12 (X_ConfigureWindow)
  Resource id in failed request:  0xc0007a
  Serial number of failed request:  140
  Current serial number in output stream:  141
如果我设置(XSetErrorHandler)我自己的“忽略一切”错误处理程序,“解释性消息”就会消失


如何使Xlib忽略错误,但仍打印错误消息?

您必须格式化自己的消息。消息的内容是XerorEvent结构的内容:


如果您确实想要这些错误消息,您几乎有两种选择:

  • XlibInt.c
    中拉出
    \u XPrintDefaultError
    ,以及一些私有标题(包括使用库私有定义的所有注意事项)
  • 重新定义
    exit()
    调用时不实际退出
两者都不是特别漂亮,都可能会损坏并降低您的便携性,但它们确实有效