Linux c 记录一些函数的常见用法和应用场景

文件状态获取

stat函数

  1. 函数原型
int stat(const char *path, struct stat *buf);
  1. 可获取的成员信息
struct stat {
               dev_t     st_dev;     /* ID of device containing file */
               ino_t     st_ino;     /* inode number */
               mode_t    st_mode;    /* protection */
               nlink_t   st_nlink;   /* number of hard links */
               uid_t     st_uid;     /* user ID of owner */
               gid_t     st_gid;     /* group ID of owner */
               dev_t     st_rdev;    /* device ID (if special file) */
               off_t     st_size;    /* total size, in bytes */
               blksize_t st_blksize; /* blocksize for filesystem I/O */
               blkcnt_t  st_blocks;  /* number of 512B blocks allocated */
               time_t    st_atime;   /* time of last access */
               time_t    st_mtime;   /* time of last modification */ //指的是修改文件内容
               time_t    st_ctime;   /* time of last status change */ //指的是修改inode属性
            };
//示例
int getSize(char *filename)
{
	struct stat statbuf;
	stat(filename,&statbuf);
	unsigned int size=statbuf.st_size;
	if(size<0)
	    return 0;
	return size;
}

access函数

  1. 常见场景
    检测文件状态,以便后续读、写、执行、状态获取等操作。

  2. 依赖的头文件

   #include <unistd.h>
   #include <stdio.h>
  1. 函数原型
   int access(const char *pathname, int mode);
  1. 相关参数
    pathname ----需要被检测的文件名
    mode -----需要的操作模式
    常见操作模式如下:
    R_OK —文件是否可读
    W_OK —文件是否可写
    X_OK —文件是否可执行
    F_OK —文件是否存在

返回值:
成功返回0,失败返回-1

system函数

功能:
执行shell脚本 或者 执行Linux控制台命令

函数原型

int system(const char *command);

返回值:
成功:对于指令返回进程退出码,对于shell脚本返回脚本返回值;失败 对于指令返回-1,对于shell脚本返回127。

示例:

int ret = system("./test.sh");
int res = system("mkdir testFileDir");

自定义文件操作函数

//获取改文件所有内容到string中
int getStrFromFile(const char* fileName,std::string& oData)
{
FILE* fp= fopen(fileName,“rb”);
if (fp==NULL)
{
return -1;
}
static char linebuff[128];
fseek(fp,0L,SEEK_SET);
while(!feof(fp))
{
if( fgets(linebuff,sizeof(linebuff)-1,fp) != NULL)
{
oData.append(linebuff);
}
}
fclose(fp);
return 0;
}
//替换string内的内容
string replaceMacstr(string &oData)
{
string newmac;
int pos;
pos = oData.find("😊;
while(pos != -1)
{
// str.length()求字符的长度,注意str必须是string类型
oData.replace(pos,string("😊.length(),"-"); // 把":“替换未”-"
pos = oData.find("😊;
}
newmac = oData;
return newmac;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

路过的小熊~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值