我發現喬恩·埃裏克森的書,Hacking: The Art of Exploitation這個來源,C,寫系統調用,寫INT
userid = getuid(); // get the real user ID
// Writing data
if(write(fd, &userid, 4) == -1) // write user ID before note data
fatal("in main() while writing userid to file");
write(fd, "\n", 1); // terminate line
我試圖編譯這段代碼,並發現,我寫的文件,用戶ID(這是什麼我在上面的代碼中寫)是不正確的;他們只是寫了奇怪的字符(我認爲寫在這裏並不重要)。所以問題是我想通過一個int
函數需要char *
,因爲我想寫的文件的結果是false。
所以這是一個錯誤,對吧?
'write(fd,&userid,4)'將二進制表示寫入文件。你的文本編輯器不會理解它。 – 2013-02-09 16:00:10
使用'人寫'(或谷歌它)。 'write'系統調用需要一個'const void *',而不是'char *'。這是二進制表示的問題(即您的整數不是編碼爲char的)而不是整數。 – RageD 2013-02-09 16:00:37