我发现乔恩·埃里克森的书,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