簡體   English   中英

用C編寫我自己的longjmperror()

[英]Writing my own longjmperror() in C

我在看longjmp手冊,在“錯誤”部分說:

錯誤

如果env的內容已損壞,或者與已經返回的環境相對應,則longjmp()例程將調用例程longjmperror(3)。 如果longjmperror()返回,程序將中止(請參閱abort(3))。 longjmperror()的默認版本將消息``longjmp botch''打印到標准錯誤並返回。 希望更正常退出的用戶程序應編寫自己的longjmperror()版本。

我將如何編寫自己的longjmperror版本? 根據我在C語言中所知道的,您不能覆蓋函數,並且當它找不到要跳轉的點時,我真的需要跳遠以特定的方式退出。

無論如何,在Mac OS X(10.9.2,Mavericks)上, longjmperror()的原型為:

void longjmperror(void);

您使用該簽名編寫一個函數。 它不能返回(或者,如果返回,則程序將被abort() ed)。 您在該功能中所做的只是您的業務,但請記住,對於該功能而言,根本沒有什么災難性的錯誤調用)。 它可能會將錯誤記錄到您的日志文件中,或者只是在退出之前寫一條更有意義的消息(而不是中止和可能的核心轉儲)。

您可以在系統庫之前鏈接包含功能的對象文件。 通常不希望您替換系統功能,但這是您要覆蓋的功能。

暫無
暫無

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

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