从化一站式网站建设,文件上传到沧州建设局网站,怎么样模仿网站,东莞平面设计最近看到一个问题#xff0c;如何获取当前系统的文件类型#xff1f;
这个时候就要介绍下/proc/mounts文件#xff1a;这个文件以/etc/mtab文件的格式给出当前系统所安装的文件系统信息。同时也能反映出任何手工安装从而在/etc/mtab文件中没有包含的文件系统。
我们可以通…最近看到一个问题如何获取当前系统的文件类型
这个时候就要介绍下/proc/mounts文件这个文件以/etc/mtab文件的格式给出当前系统所安装的文件系统信息。同时也能反映出任何手工安装从而在/etc/mtab文件中没有包含的文件系统。
我们可以通过cat /proc/mounts查看挂载文件系统的状态。
rootfirefly:~# cat /proc/mounts
sysfs /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0
proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0
udev /dev devtmpfs rw,nosuid,relatime,size1960196k,nr_inodes490049,mode755 0 0
devpts /dev/pts devpts rw,nosuid,noexec,relatime,gid5,mode620,ptmxmode000 0 0
tmpfs /run tmpfs rw,nosuid,noexec,relatime,size393192k,mode755 0 0
/dev/mmcblk1p7 /root-ro ext4 ro,relatime,dataordered 0 0
/dev/mmcblk1p8 /userdata ext4 rw,relatime,dataordered 0 0
overlayroot / overlay rw,relatime,lowerdir/root-ro,upperdir/userdata/rootfs_overlay,workdir/userdata/rootfs_overlay-workdir/_ 0 0
securityfs /sys/kernel/security securityfs rw,nosuid,nodev,noexec,relatime 0 0
tmpfs /dev/shm tmpfs rw,nosuid,nodev 0 0
tmpfs /run/lock tmpfs rw,nosuid,nodev,noexec,relatime,size5120k 0 0mounts文件包含6列
Device mount的设备Mount Point 挂载点也就是挂载的路径File System Type 文件系统类型如ext4、xfs等Options 挂载选项包括读写权限等参数无用内容保持内容和**/etc/fstab**格式一致无用内容保持内容和**/etc/fstab**格式一致
下面写个程序提取下设备名挂载目录文件系统类型等参数。
#include stdio.h
#include stdlib.h
#include string.h#define MOUNTS_INFO /proc/mountstypedef struct
{char devName[32];char dirName[16];char fsType[16];char authority[16];
}PartitionInfo;int getPartitionInfo(char *pPartitionName,PartitionInfo *pPartitionInfo)
{FILE *fp NULL;char str[128] {0};char *p NULL,*q NULL,*pTmpStr NULL;int i 0;fp fopen(MOUNTS_INFO, r);if (fp 0){printf(open %s failed\n,MOUNTS_INFO);return -1;}while (NULL ! fgets(str,sizeof(str),fp)){p strstr(str,pPartitionName);if (NULL ! p){for(i 0;i 4; i){if (0 i){q strtok_r(str, ,pTmpStr);strcpy(pPartitionInfo-devName,q);}if (1 i){q strtok_r(p, ,pTmpStr);strcpy(pPartitionInfo-dirName,q); } if (2 i){q strtok_r(p, ,pTmpStr);strcpy(pPartitionInfo-fsType,q); } if (3 i){q strtok_r(p,,,pTmpStr);strcpy(pPartitionInfo-authority,q);} p pTmpStr; } }}fclose(fp);return 0;
}
int main()
{int status -1;PartitionInfo partitionInfo;memset(partitionInfo,0,sizeof(PartitionInfo));status getPartitionInfo(/dev/pts,partitionInfo);if(status 0){printf(get partition info failed\n);return -1;}printf(devName:%s\n,partitionInfo.devName);printf(dirName:%s\n,partitionInfo.dirName);printf(fsType:%s\n,partitionInfo.fsType);printf(authority:%s\n,partitionInfo.authority);return 0
}运行结果
rootfirefly:~/mnt# ./get_fsType
devName:devpts
dirName:/dev/pts
fsType:devpts
authority:rw