Linux系统编程中的文件操作基础
在Linux系统编程中,文件操作是非常基础且重要的部分,下面将为大家详细介绍相关的内容。
1. 错误处理与errno
在进行系统编程时,错误处理是必不可少的环节。 strerror_r() 函数是线程安全的,它会将错误信息填充到指定长度的缓冲区中。调用 strerror_r() 成功时返回 0,失败时返回 -1,并且会设置 errno 。
对于一些函数,其返回类型的所有取值都是合法的返回值,这种情况下,在调用函数前需要将 errno 置为 0,调用后再检查它。例如:
errno = 0;
arg = strtoul (buf, NULL, 0);
if (errno)
perror ("strtoul");
在检查 errno 时,常见的错误是忘记任何库或系统调用都可能修改它。比如下面的代码就是有问题的:
if (fsync (fd) == -1) {
fprintf (stderr, "fsync failed!\n");
if (errno == EIO)
fprintf (stderr, "I/O error on %d!\n", fd);
}
如果需要在函数调用过程中保留 errno 的值,应该先保存它:
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



