我在用 valgrind 测试我的 bin 时收到这条消息:
==8454== Warning: invalid file descriptor 1024 in syscall close()
我打开一次,关闭一次。下面的函数打开()一个文件,获取内容,然后关闭()文件。
int parse(t_struct *data)
{
int fd;
char *s;
if ((fd = open(data->file, O_RDONLY)) == -1)
{
fprintf(stderr, "Cannot open\n");
return (-1);
}
while ((s = gnl(fd)) != NULL)
{
if (list_add_elem_at_back(&data->list, s) == FALSE)
{
fprintf(stderr,"Cannot stock\n");
return (-1);
}
}
close(fd);
return (0);
}
哪里/有什么问题?
最佳答案
使用ulimit -n
,它会显示最大打开文件数,我猜你不会关闭 fd,为了代码的安全。请跟踪每个 fopen
的代码, socket
或 select
必须有 close
.
关于c - Valgrind 消息 : invalid file descriptor 1024 in syscall close(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22288766/