C陷阱与缺陷(五)
来源:互联网 发布:幕墙光污染模拟软件 编辑:程序博客网 时间:2024/04/30 00:41
库函数
函数库调用
系统调用
在所有的ANSI C编译器版本中,C库函数是相同的
各个操作系统的系统调用是不同的
它调用函数库中的一段程序(或函数)
它调用系统内核的服务
与用户程序相联系
是操作系统的一个入口点
在用户地址空间执行
在内核地址空间执行
它的运行时间属于“用户时间”
它的运行时间属于“系统”时间
属于过程调用,调用开销较小
需要在用户空间和内核上下文环境间切换,开销较大
在C函数库libc中有大约300个函数
在UNIX中大约有90个系统调用
典型的C函数库调用:system fprintf malloc
典型的系统调用:chdir fork write brk;
库函数调用通常比行内展开的代码慢,因为它需要付出函数调用的开销。但系统调用比库函数调用还要慢很多,因为它需要把上下文环境切换到内核模式。
学习链接:
http://c.biancheng.net/cpp/u/hanshu/ C语言中文网
signal() 函数
C 库函数 void (*signal(int sig, void (*func)(int)))(int) 设置一个函数来处理信号,即带有 sig 参数的信号处理程序。
signal() 函数的声明。
void (*signal(int sig, void (*func)(int)))(int)
http://www.runoob.com/cprogramming/c-function-signal.html 菜鸟教程
errno函数
头文件:#include <errno.h>
函数原型:errno
功能:记录系统的最后一次错误代码
参数:无
返回值:错误代号(整型值)
if((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) == -1) {
fprintf(stderr, "errno = %d \n", errno);
exit(1);
}
printf("Socket opened successfully \n");
//errno 返回整型错误代号。
getchar函数
概念:
getchar 由宏实现:#define getchar() getc(stdin)。getchar有一个int型的返回值.当程序调用getchar时.程序就等着用户按键.用户输入的字符被存放在键盘缓冲区中.直到用户按回车为止(回车字符也放在缓冲区中).当用户键入回车之后,getchar才开始从stdin流中每次读入一个字符.getchar函数的返回值是用户输入的第一个字符的ASCII码,如出错返回-1,且将用户输入的字符回显到屏幕.如用户在按回车之前输入了不止一个字符,其他字符会保留在键盘缓存区中,等待后续getchar调用读取.也就是说,后续的getchar调用不会等待用户按键,而直接读取缓冲区中的字符,直到缓冲区中的字符读完为后,才等待用户按键.
1.getchar是以行为单位进行存取的。
当用getchar进行输入时,如果输入的第一个字符为有效字符(即输入是文件结束符EOF,Windows下为组合键Ctrl+Z,Unix/Linux下为组合键Ctrl+D),那么只有当最后一个输入字符为换行符'\n'(也可以是文件结束符EOF,EOF将在后面讨论)时,getchar才会停止执行,整个程序将会往下执行。譬如下面程序段:
while((c = getchar()) != EOF){
putchar(c);
}
即无论你输入多少字符,只有当换行或结束时,才会执行while循环。
2.getchar()的返回值一般情况下是字符,但也可能是负值,即返回EOF。
char c;
c = getchar();
为了能够让所定义的变量能够包含getchar函数返回的所有可能的值,正确的定义方法如下,并且本身返回值就是int:
int c;
c = getchar();
文件操作函数
文件操作函数API后续再总结说明。
- C陷阱与缺陷(五)库函数
- C陷阱与缺陷(五)
- 读书笔记--C陷阱与缺陷(五)
- 读《C陷阱和缺陷》(五)
- c陷阱与缺陷
- 《c陷阱与缺陷》
- C陷阱与缺陷
- C陷阱与缺陷
- C 陷阱与缺陷
- c陷阱与缺陷
- c陷阱与缺陷
- C陷阱与缺陷
- “c缺陷与陷阱”
- 《C陷阱与缺陷》
- c缺陷与陷阱
- C陷阱与缺陷
- c陷阱与缺陷
- c缺陷与陷阱
- codeforces Bear and Different Names
- Maven的pom文件
- Setting up an RTEMS Development Environment for Windows
- 1分钟实现“延迟消息”功能
- mac nginx的安装
- C陷阱与缺陷(五)
- kali安装sublime text 2
- VanlOS 10 RedWhale Kube coVirt 套件 --- 一套框架同时管理X86_64和aarch64容器和虚拟机
- A Low Cost JTAG Debugger for the Raspberry Pi
- Longest Substring Without Repeating Characters
- 二叉树的递归和非递归
- Markdownpad 2 破解补丁与注册机最新使用说明
- Starting up Pi/RTEMS development again, updates on the way!
- 算法笔记_070-BellmanFord算法简单介绍(Java)