导航:首页 > 编程系统 > linuxcstat函数

linuxcstat函数

发布时间:2023-04-26 01:48:22

linux C语言如何得到一个文件的权限并输出

/*-楼主可以参考一下我写的这段程序---------*/
/*-----用stat函数得到文件信息,并用函数转化为文本输出,就跟ls命令一样-----*/
/*----------注释我写得很详细,望采纳-----------*/
#include <sys/types.h> /*-----这三个头文件一定要有-*/
#include <sys/stat.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void mode_to_letter(int mode,char *str)
{
/*-------这个函数用来把模式值转化为字符串------*/
str[0]='-'; /*------这里的S_*****都是宏定义,用来判断模式属性-*/

if(S_ISDIR(mode)) str[0]='d';/*-文件夹-*/
if(S_ISCHR(mode)) str[0]='c';/*-字符设备-*/
if(S_ISBLK(mode)) str[0]='b';/*-块设备-*/

if(mode & S_IRUSR) str[1]='r';/*--用户的三个属性-*/
else str[1]='-';
if(mode & S_IWUSR) str[2]='w';
else str[2]='-';
if(mode & S_IXUSR) str[3]='x';
else str[3]='-';

if(mode & S_IRGRP) str[4]='r';/*--组的三个属性-*/
else str[4]='-';
if(mode & S_IWGRP) str[5]='w';
else str[5]='-';
if(mode & S_IXGRP) str[6]='x';
else str[6]='-';

if(mode & S_IROTH) str[7]='r';/*-其他人的三个属性-*/
else str[7]='-';
if(mode & S_IWOTH) str[8]='w';
else str[8]='-';
if(mode & S_IXOTH) str[9]='x';
else str[9]='-';

str[10]='\0';
}

int main(int argc,char *argv[])
{
struct stat sb;/*- 定义stat结构--*/
char str[12];
if(argc!=2){
fprintf(stderr,"Usage: %s <pathname>\n",argv[0]);
exit(EXIT_FAILURE);
}

if(stat(argv[1],&sb)==-1){/*-stat函数,详情请 man 2 stat 查看 -*/
perror("stat");
exit(EXIT_FAILURE);
}

printf("Mode:%lo(octal)\n",(unsigned long)sb.st_mode);
mode_to_letter(sb.st_mode,str);
printf("Mode:%s\n",str);
return 0;
}

❷ LINUX下C语言实现文件名检索

LINUX下C语言通过文件名检索创建多个文件,实现文件名有规律的变化test1,test2...这种功能,方法如下:

DIR*opendir(constchar*filename);
structdirent*readdir(DIR*dirp);
//利用这两个函数获取要建立文件的目录
while((psDirent=readdir(pdir))!=NULL)
{
//readdir返回的是目录下的名称,然后判断一下当前这个名字是子目录还是文件
structstatst;
stat(pcFileName,&st);

if(S_ISDIR(st.st_mode))
continue;//是目录继续循环
else
filecount++;//是文件就加1
}
//通过while循环创建文件名为文件(filecount+1)的文件。

❸ Linux 下调用C的库函数stat,返回errno=75然后调用strerror(errno)= 7287475, 请问上述错误码代表什么错误

errno = 75

返回 ”75“ 代表的错误是:值已经大于了定义的数据类型

❹ 如何用C语言获取文件的大小

intfile_size(char*filename)

{

FILE*fp=fopen(filename,"r");

if(!fp)return-1;

fseek(fp,0L,SEEK_END);

intsize=ftell(fp);

fclose(fp);

returnsize;

}

(4)linuxcstat函数扩展阅读

C语言复获取文件长度制及全部内容

FILE*fp;

fp=fopen("localfile","rb");//localfile文件名

fseek(fp,0L,SEEK_END);/*定位到文件末尾*/

flen=ftell(fp);/*得到文件大小*/

p=(char*)malloc(flen+1);/*根据文件大小动态分配内存空间*/

if(p==NULL)

{

fclose(fp);

return0;

}

fseek(fp,0L,SEEK_SET);/*定位到文件开头*/

fread(p,flen,1,fp);/*一次性读取全部文件内容*/

p[flen]=0;/*字符串结束标志*/

❺ linux c语言如何快速知道函数的头文件

1、要用到unistd.h头文件。

2、Write函数用法:write函数所在的头文件为 <unistd.h>write有两种用法。一种是:ssize_twrite(int handle, void *buf, int nbyte);handle 是文件描述符;buf是指定的缓冲区,即指针,指向一段内存单元;nbyte是要写入文件指定的字节数;返回值:写入文档的字节数(成功);-1(出错)write函数把buf中nbyte写入文件描述符handle所指的文档,成功时返回写的字节数,错误时返回-1.另一种是:write(const char* str,int n)str是字符指针或字符数组,用来存放一个字符串。n是int型数,它用来表示输出显示字符串中字符的个数。write("string",strlen("string");表示输出字符串常量3、程序示例:

#include<stdio.h>
#include<stdlib.h>
#include<fcntl.h>
#include<sysstat.h>
#include<io.h>
#include<string.h>
intmain(void)
{
int*handle;charstring[40];
intlength,res;/*Createafilenamed"TEST.$$$".If"TEST.$$$"alreadyexists,itwillbeoverwritten.*/
if((handle=open("TEST.$$$",O_WRONLY|O_CREAT|O_TRUNC,S_IREAD|S_IWRITE))==-1)
{
printf("Erroropeningfile. ");
exit(1);
}
strcpy(string,"Hello,world! ");
length=strlen(string);
if((res=write(handle,string,length))!=length)
{
printf("Errorwritingtothefile. ");
exit(1);
}
printf("Wrote%dbytestothefile. ",res);
close(handle);return0;}

❻ linux c用什么函数创建文件夹

Linux c语言可以使用系统提供的mkdir函数来创建文件夹。

1、函数原型

int mkdir(const char *path, mode_t mode);

2、参数说明:回

path是目录名
mode是目录权限

3、需要答头文件

#include<sys/stat.h>

4、示例

js">//添加mkdir函数声明头文件
#include<sys/stat.h>
#include<sys/types.h>
intmain()//主函数
{
//直接调用mkdir函数
//建立一个名为的文件夹
//权限为0777,即拥有者权限为读、写、执行
//拥有者所在组的权限为读、写、执行
//其它用户的权限为读、写、执行
mkdir("",0777);
return0;
}

说明:函数调用试图建立777权限的文件夹,但是在实际程序执行时,还需要考虑umask值,最终才会得到实际的权限。

5、执行效果如下图所示

说明:t.c是源码文件,有gcc进行编译,-o是gcc的参数,有于指明编译后输出的文件,t为源码经gcc编译后生成的可执行文件。./t是执行当前目录下的生成的可执行文件t。

❼ stat是什么

最佳答案检举 硬盘接口的一种,是一种标准

有关于各种SATA标准的术语目前看起来就是一团迷雾。Serial ATA Working Group受命建立和发展Serial ATA规范,现在已经改名为SATA-IO(SATA International Organization,SATA国际组织)了,其在官方站点(www.searialata.org)上进行澄清,SATA II不是SATA 3Gb/s的名字而是一个制定SATA规范的组织/团队的名字,3Gb/s仅仅是SATA II组织制定的各种特性之一——这个也是混乱的根源。SATA的真正标准,按照SATA-IO目前的做法应该是Serial ATA版本、加上传输界面传输速度、再加上扩展特性而成,目前是Serial ATA 1.0a、1.5Gb/s和3.0Gb/s、以及Extensions to Serial ATA 1.0a, Revision 1.2。

SATA组织/团队(就是SATA-IO)完成Serial ATA 1.0a规范之后,SATA II组织/团队(事实上也是SATA-IO)便进行对Serial ATA 1.0a进行扩展,得到的结果,就是Extensions to Serial ATA 1.0a, Revision 1.2(当前版本),这些扩展大大增强了SATA的能力。Extensions to Serial ATA 1.0a,可以称之为SATA1.0a扩展,包含了一系列的规格,这些附加的属性和能力被定义为可选的,原意是让厂商/客户可以根据实际市场的需要进行部署。这样市面上千奇百怪的控制器/硬盘具有不同的特性就不足为奇了。

Serial ATA 1.0a规范里面并没有对界面传输速率进行规定,事实上,Extensions to Serial ATA 1.0a, Revision 1.2也没有。界面传输速率于它们是无关的。按照传输信号来划分,SATA 150MB/s也就是SATA 1.5Gb/s属于Serial ATA Generation-1 Signaling Rate(第一代SATA速率),SATA 300MB/s也就是SATA 3Gb/s则属于Serial ATA Generation-2 Signaling Rate,未来的SATA 600MB/s—SATA 6Gb/s则属于Serial ATA Generation-3 Signaling Rate,去掉“Signaling Rate”、剩下Serial ATA Generation-1这样的表述也可以使用。

说完这些官方的SATA标准,就不能不提到Intel(联合多个厂商)提出的AHCI(Advanced Host Controller Interface,高级主机控制器界面)。AHCI相当于在控制器方进行的对SATA1.0a扩展的一种重定义,它支持一系列的SATA1.0a扩展属性,当然,AHCI包含的这些SATA1.0a扩展属性跟SATA硬盘的SATA1.0a扩展属性不一定是一致的。AHCI定义了与SATA设备通讯的一个界面,与原始的基于Port方式的与SATA设备通信的方式不同,AHCI提供的是基于系统内存的通信方式,这一点看起来就跟传统的DMA(Direct Memory Access)方式类似:ACHI控制器直接将数据读出或者存储到内存,软件无需看到(也看不到)I/O Port,所要发送的指令就简单多了,也节约了CPU资源。

在将界面重新定义的过程中,AHCI实现了如NCQ、Hot Plug(热插拔)这样的功能。AHCI规范目前的版本为1.1。

最后,ACHI也没有对界面传输速率进行规定,所以就出现了属于SATA 1.5Gb/s(Serial ATA Generation-1)的ICH6R支持AHCI,属于SATA 3Gb/s(Serial ATA Generation-2)的ICH7R也支持AHCI的情形。理论上讲新标准是可以向下兼容的,不过是降速使用了,也就是说你用SATA2的硬盘在SATA上使用时,其传输速率是运行在150上的。

❽ linux C语言,stat 是哪(几)个词语的缩写

1楼别误导人,statue是什么啊,雕像,雕像和C语言有什么关系
楼主说的stat应该是指stat函数或者sys/stat.h头文件吧
在man stat里面,解释是
stat - display file or file system status
所以stat应该就是status的缩写而已

❾ C语言 stat()函数获得文件大小需不需要打开文件就是stat()函数是怎么获得文件的大小的

stat函数不需要,只要文件名就行(你的文件在当前路径下,要不还需将路径名加专上)属,int state(const char * path,struct stat *buf);这是函数原型。在struct state这个结构体中有个st_size这个变量,他就是文件大小的变量。具体你可以查一下man手册。与它类似的还有一个fstat,他需要open文件得到文件描述符。

❿ c语言如何通过文件属性获取文件大小

c语言可以通过stat()函数获得文件毕前属性,通吵数仔过返回的文件属性,从中获取文件大小。
#include
<sys/stat.h>
可见以下结构体和函数
struct
stat
{

_dev_t
st_dev;

_ino_t
st_ino;

unsigned
short
st_mode;

short
st_nlink;

short
st_uid;

short
st_gid;

_dev_t
st_rdev;

_off_t
st_size;

//文件大小

time_t
st_atime;

time_t
st_mtime;

time_t
st_ctime;

};
stat(const
char
*,
struct
_stat
*);
//根据文件名得到文件属性
参考代码
#include <sys/升汪stat.h>
void main( )
{
struct stat buf ;
if ( stat( "test.txt", &buf ) < 0 )
{
perror( "stat" );
return ;
}
printf("file size:%d\n", buf.st_size );
}

阅读全文

与linuxcstat函数相关的资料

热点内容
如何打开crv文件 浏览:41
md文件夹在win7不能打开 浏览:668
颂拓手表运动数据如何导入微信 浏览:654
什么网站信访最有效 浏览:396
魅蓝e2升级安卓70 浏览:438
黄石响应式网站建设多少钱 浏览:410
怎么把excel工作簿放到一个文件夹 浏览:949
wifi网络延时大怎么处理 浏览:345
云办公的原理是把传统文件放哪里 浏览:113
不属于群防群治队伍数据项有哪些 浏览:404
java树向上找 浏览:241
数据库查询票价 浏览:503
word黑色下划线怎么去掉 浏览:879
学习编程怎么学比较好 浏览:351
有什么好看的地图网站 浏览:593
oppo如何设置app黑名单 浏览:71
移动数据用了多少在哪里显示 浏览:549
excel表改变文件名颜色的方法 浏览:966
linuxshell二进制文件 浏览:36
什么是网络道德问题产生的 浏览:836

友情链接