- 论坛徽章:
- 2
|
Linux下程序打开的文件被删除,程序继续写这个文件,strerror(errno)取不到错误信息 ,程序不会报错。怎么才能让程序在打开的文件被删除时,报出一个错误呢,请指教。
代码如下
void* thread(void *i)
{
int k = *(int *)i;
int j = 0;
FILE *pf = NULL;
char tbuf[TBUF_LEN];
char buf[BUF_LEN];
char file[PATH_LEN];
memset(tbuf,0x00,TBUF_LEN);
memset(buf,0x00,BUF_LEN);
memset(file,0x00,FILE_LEN );
sprintf(file,"%s%d.txt",g_path,k);
int fd = open(file, O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP);
if (fd == -1) {
printf("open file %s faild: %s\n", file, strerror(errno));
return NULL;
}
int len = 0;
int buf_len = 0;
while(1)
{
getTime(tbuf);
sprintf(buf,"%s %s %d\n",file,tbuf,j++);
len = 0;
buf_len = strlen(buf);
while (len < buf_len) {
int this_len = write(fd, buf + len, buf_len - len);
if (this_len < 0) {
printf("write file %s failed: %s\n", file, strerror(errno));
break;
}
len += this_len;
}
fsync(fd);
usleep(100000);
}
close(fd);
return NULL;
}
|
|