導航:首頁 > 編程系統 > 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函數相關的資料

熱點內容
wifi網路延時大怎麼處理 瀏覽:345
雲辦公的原理是把傳統文件放哪裡 瀏覽:113
不屬於群防群治隊伍數據項有哪些 瀏覽:404
java樹向上找 瀏覽:241
資料庫查詢票價 瀏覽:503
word黑色下劃線怎麼去掉 瀏覽:879
學習編程怎麼學比較好 瀏覽:351
有什麼好看的地圖網站 瀏覽:593
oppo如何設置app黑名單 瀏覽:71
移動數據用了多少在哪裡顯示 瀏覽:549
excel表改變文件名顏色的方法 瀏覽:966
linuxshell二進制文件 瀏覽:36
什麼是網路道德問題產生的 瀏覽:836
c清除文件夾 瀏覽:407
租房貸款用什麼app 瀏覽:59
虛擬機oracle安裝教程 瀏覽:745
太原編程班哪裡有 瀏覽:544
壓縮文件怎麼找 瀏覽:586
wwwjshousecomcn 瀏覽:648
U盤文件路徑在哪 瀏覽:502

友情鏈接