假如您沒有應用程序的源代碼并且由于 C 的 GNU 庫(glibc)函數正將某些錯誤信息返回給該應用程序而使它失敗,那么您該怎么辦?因為 glibc 是開放源碼,所以您當然可以獲得其源代碼、對它進行更改、重新構建和安裝。然而,這不適合那些膽怯的人,因為雖然 API 有很好的文檔說明,但 GNU C 庫的內部組織卻沒有。查找正確的函數原型只是眾多挑戰中的第一個。它還是一個很大的包,所以第一次編譯時,它將花一些時間(glibc 2.2.2 有 8552 個文件和 1775440 行代碼,包括注釋)。
# # Here is a program that calls setresgid() for testing # setresgid-tester: setresgid-tester.c gcc -o setresgid-tester setresgid-tester.c 文件 libfuncs.c 包含我的 setresgid() 專用版本。實現它以支持與原始 setresgid() 相同的參數數目時要小心,并在其它方面完成與原始 setresgid() 相同的操作,盡管我的版本欺騙該應用程序并始終返回 0。