⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cutil-file.c

📁 Linux环境下常用功能的实现
💻 C
字号:
#include "cutil.h"/** * cutil_file_get_size * @pszName:文件名称 *  * 获取文件的大小 *  * Returns: 成功返回文件大小.失败返回-1 */int cutil_file_get_size(const char *pszName){	struct stat struStat;	memset(&struStat,0,sizeof(struStat));	if(stat(pszName, &struStat) != 0)	{		cutil_log_error(N_("get file:%s info error:%s\n"), 			pszName, strerror(errno));		return -1;	}		return struStat.st_size;}/** * cutil_file_clone * @pszFrom:原始文件名称 * @pszTo:目标文件名称 * @nMode: 目标文件的权限 * * 复制源文件到目标文件 *  * Returns: 成功返回0.失败返回-1 */int cutil_file_clone(const char *pszFrom, const char *pszTo, int nMode){	int nFromFd, nToFd;	char szBuffer[4096];	int nBytesRead, nBytesWrite;	char *pszBuffer;	if((nFromFd = open(pszFrom, O_RDONLY)) ==  - 1)    {		cutil_log_error(N_("open file:%s error:%s\n"), 			pszFrom, strerror(errno));		return -1;	}    if ((nToFd = open(pszTo, O_WRONLY | O_CREAT, nMode)) ==  - 1)    {		cutil_log_error(N_("open file:%s error:%s\n"), 			pszTo, strerror(errno));		close(nFromFd);		return -1;    }		while(1)	{		nBytesRead = read(nFromFd, szBuffer, sizeof(szBuffer));		if(nBytesRead == 0)			break;		if ((nBytesRead ==  - 1) && (errno != EINTR))        {			cutil_log_error(N_("read file:%s error:%s\n"), 				pszFrom, strerror(errno));			close(nFromFd);			close(nToFd);			return -1;        }		pszBuffer = szBuffer;		while(nBytesRead > 0)		{			nBytesWrite = write(nToFd, pszBuffer, nBytesRead);			if ((nBytesWrite ==  - 1) && (errno != EINTR))			{				cutil_log_error(N_("write file:%s error:%s\n"), 					pszTo, strerror(errno));				close(nFromFd);				close(nToFd);				return -1;			}			pszBuffer += nBytesWrite;			nBytesRead -= nBytesWrite;		}    }    close(nFromFd);    close(nToFd);	return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -