1.open.c函数分析
#include//Linux标准头文件,定义了各种符号常数和类型,并声明了各种函数。
//如,定义了__LIBRARY__,则还包括系统调用号和内嵌汇编_syscall0()等。
//linux/include/asm-arm/unistd.h
#include//类型头文件,定义了基本的系统数据类型
#include//文件状态头文件,含有文件或文件系统状态结构stat{}和常量。
#include//文件控制头文件,用于文件及其描述符的操作控制常数符号的定义。
#include//C库
#include//C库
int main(void)
{
int fd;
//close(0);
if((fd=open("/tmp/hello.c",O_CREAT|O_TRUNC|O_WRONLY,0600))<0)//打开/tmp目录下的hello.c文件,如果没有就自动创建
{
perror("open:");//判断是否出错
exit(1);//直接推出函数,结束该进程
}
else
{
printf("open file:hello.c %d\n",fd);//打印文件的描述符
}
if(close(fd)<0)//关闭文件,看是否出错
{
perror("close:");
exit(1);
}
else
{
printf("close hello.c\n");
}
exit(0);//退出进程,直接结束该进程
}
/*--------------------------------
notes:
1.open函数见系统调用手册,在这里只讲函数原型:
1)int open(const char *pathname,flags,int perms)
其中:pathname表示被打开的文件名。
flag:文件打开的方式
perms:被打开文件的权限取值,为8进制表示法。
2)成功:返回文件描述符
失败:-1.
2.perror(打印出错误原因新鲜字符串)
1)表头文件:#include
2)函数定义:void perror(const char *s);
3)函数说明:perror()用来将上一个函数发生错误的原因输出到
标准错误(stderr).参数S所指的字符串会先打印出,后面在加上
错误原因字符串。此错误原因依照全局变量error的值来决定要
输出的字符串。
3.exit(结束进程执行)
1)相关函数exit,wait,abort
2)表头文件 #include
3)定义函数:void exit(int status);
4)函数说明:exit()用来立刻结束目前进程的执行,并把参数
status返回给父进程,并关闭未关闭的文件。此函数调用后不会
返回,并且会传递SIGCHLD信号给父进程,父进程可以由wait函数
取得子进程结束状态。
5)附加说明,_exit()不会处理标准I/O缓冲区,如果更新缓冲区请
使用exit()
6)exit是系统调用级别的,它表示了一个进程的结束,它将删除进程
使用的内存空间,同时把错误信息返回父进程。通常情况:exit(0)表示
程序正常, exit(1)和exit(-1)表示程序异常退出,exit(2)表示系统找不
到指定的文件。在整个程序中,只要调用exit就结束。
4.close
1)所需要的头文件 #include
2)函数原型 int close(int fd)
3)fd:文件描述符
4)函数返回值:0:成功 -1:出错
5.open函数返回的文件描述符一定是最小的未用文件描述符。由于一个进程
在启动时自动打开0,1,2三个文件描述符,因此,该文件运行结果中的返回的
文件描述符为3。
---------------------------------------------------*/
阅读(822) | 评论(0) | 转发(1) |