错误编号errno
errno 变量
strerror()函数
perror()函数
大部分的系统调用 调用出错后会返回-1并设置errno变量的值
错误编号代码:
#include<stdio.h>
#include<errno.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<string.h>
int main(void)
{
int fd;
printf("errno = %d\n",errno);
fd=open("/text.txt",O_RDONLY);
if(-1==fd)
{
printf("errno =%d\n",errno);
printf("%s\n",strerror(errno));
perror("");
perror("error:");
return 1;
}
return 0;
}
运行结果:
空洞文件:一般多用于多线程对文件的写入
测试代码:
#include<stdio.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<unistd.h>
int main(void)
{
int fd,ret;
char buff[4096]={0};
fd=open("./text.txt",O_WRONLY|O_CREAT|O_EXCL,0644);
if(fd==-1)
{
perror("opne failed");
return -1;
}
ret=lseek(fd,4096,SEEK_SET);
if(ret==-1)
{
perror("lseek failed");
close(fd);
return -1;
}
ret=write(fd,buff,4096);
if(ret==-1)
{
perror("write failed");
close(fd);
return -1;
}
printf("write %d bytes\n",ret);
close(fd);
return 0;
}
运行结果:
: