Linux C中库函数和系统调用的区别
来源:互联网 发布:阿里云服务器域名绑定 编辑:程序博客网 时间:2024/06/05 16:56
库函数是高层的,完全运行在用户空间, 为程序员提供调用真正的在幕后完成实际事务的系统调用的更方便的接口。系统调用在内核态运行并且由内核自己提供。标准C库函数printf()可以被看做是一个通用的输出语句,但它实际做的是将数据转化为符合格式的字符串并且调用系统调用 write()输出这些字符串。
是否想看一看printf()究竟使用了哪些系统调用? 这很容易,编译下面的代码。
#i nclude <stdio.h>int main(void){ printf("hello"); return 0; }
使用命令gcc -Wall -o hello hello.c编译。用命令 strace hello 跟踪该可执行文件。是否很惊讶? 每一行都和一个系统调用相对应。 strace是一个非常有用的程序,它可以告诉你程序使用了哪些系统调用和这些系统调用的参数,返回值。 这是一个极有价值的查看程序在干什么的工具。在输出的末尾,你应该看到这样类似的一行 write(1, "hello", 5hello)。这就是我们要找的。藏在面具printf() 的真实面目。既然绝大多数人使用库函数来对文件I/O进行操作(像 fopen, fputs, fclose)。 你可以查看man说明的第二部分使用命令man 2 write 。man说明的第二部分专门介绍系统调用(像kill()和read())。 man说明的第三部分则专门介绍你可能更熟悉的库函数(像cosh()和random())。
你甚至可以编写代码去覆盖系统调用,正如我们不久要做的。骇客常这样做来为系统安装后门或木马。 但你可以用它来完成一些更有益的事,像让内核在每次某人删除文件时输出 “Tee hee, that tickles!” 的信息。
- Linux C中库函数和系统调用的区别
- Linux C中库函数和系统调用的区别
- Linux C中库函数和系统调用的区别
- Linux C中库函数和系统调用的区别
- Linux C中库函数和系统调用的区别
- Linux C中库函数和系统调用的区别
- Linux中系统调用和库函数调用的区别
- c库函数和linux系统调用的区别
- linux中系统调用和库函数的区别
- C库函数和系统调用的区别
- linux系统调用和库函数的区别
- linux系统调用和库函数调用的区别
- linux系统调用和库函数调用的区别
- Linux系统调用和库函数调用的区别
- linux系统调用和库函数调用的区别
- linux系统调用和库函数调用的区别
- linux系统调用和库函数调用的区别
- linux系统调用和库函数调用的区别
- 第一讲 - WIN32基础知识-WIN32汇编语言程序设计001
- D3D中的AGP内存、系统内存、显存
- 【汇编】dword型除法
- 修改注册表 打造个性化右键菜单
- twitter4j - update status例子(Java)
- Linux C中库函数和系统调用的区别
- IE6中对于插入的透明背景的.png的图片有灰色背景的解决方案
- 打开MySQL的慢查询记录
- Java软件架构师需要的东西
- vs2008中,在OCX控件中应用doc/view基本步骤
- excel 动态获取某列的和
- Alarm Receiver 使用 Intent无法更新值的解决方法
- mit6837的assignment2,3的总结
- java 代理访问 URLConnection