标准输入,标准输出,标准错误:
文件描述符(File Descriptor):STDIN_FILENO, STDOUT_FILENO, STDERR_FILENO(unistd.h)
文件指针(File *):stdin, stdout, stderr(stdio.h)
头文件:
sys/types.h:被unistd.h所引用,作用是预定义pid_t等类型(如typedef int pid_t),这些类型可能随操作系统不同而不同,因此通过修改头文件便能够使这部分代码能在其他系统上顺利编译运行。
errno.h:定义各种错误代码的常量,变量errno(实际上为LastError,最后一次出错的代码),char * strerror(int errno)为获取错误提示字符串的函数等。
signal(信号):
if(signal(SIGFPE, sig_fpefunc) == SIG_ERR)//捕捉除0异常
perror(argv[0]);
void sig_fpefunc(int signo)//发成异常时的处理函数
{
printf("Catch Floating Point Exception.")
exit(0);//如果不退出程序,此函数会无限次循环执行。
}
上面提到如果不退出程序,sig_fpefunc会无限次循环执行。可以配合sigsetjmp和siglongjmp函数来保存出现异常前堆栈的环境,再使用siglongjmp来恢复。
sigsetjmp()会保存目前堆栈环境,然后将目前的地址作一个记号,而在程序其他地方调用siglongjmp()时便会直接跳到这个记号位置,然后还原堆栈,继续程序好执行。
ssize_t是signed size_t,