safeio.c
来自「linux 操作系统下对系统资源监控程序的编写」· C语言 代码 · 共 85 行
C
85 行
/* Copyright (C) 1999 Drazen Kacar This file is part of LibGTop 1.0. Contributed by Drazen Kacar <dave@srce.hr>, May 1999. LibGTop is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. LibGTop is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with LibGTop; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.*/#include <unistd.h>#include <fcntl.h>#include <sys/types.h>#include <sys/stat.h>#include <dirent.h>#include <errno.h>ints_open(const char *file, int mode){ int fd; do { fd = open(file, mode); } while(fd < 0 && errno == EINTR); return fd;}ints_stat(const char *path, struct stat *buf){ int status; do { status = stat(path, buf); } while(status < 0 && errno == EINTR); return status;}ints_close(int fd){ int status; do { status = close(fd); } while(status < 0 && errno == EINTR); return status;}ssize_ts_pread(int fd, void *buf, size_t nbytes, off_t offset){ ssize_t len; /* Now, why doesn't the pread(2) man page say anything about pread() return values? Can it read less bytes than requested? */ do { len = pread(fd, buf, nbytes, offset); } while(len < 0 && errno == EINTR); return len;}int s_closedir(DIR *dirp){ int status; do { status = closedir(dirp); } while(status < 0 && errno == EINTR); return status;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?