C Linux系統上的對於檔案的操作

2021-10-08 11:38:30 字數 2218 閱讀 4963

因為手上的活遇到了檔案相關的操作,記錄一下相關的**,以便以後檢視。

系統環境: linux

建立指定路徑的檔案,利用mkdir函式

/**

*pathname 表示絕對路徑字串

*mode 表示資料夾許可權

*更多資訊可以利用 man 2 mkdir 在終端檢視

*/int

mkdir

(const

char

*pathname, mode_t mode)

;

示例:

#include

void

createfolder

(std::string foldername)

else

}else

}

示例:

//直接呼叫 linux 終端命令

std::string command =

"mkdir -p "

+ folder +

"\nchown system.system "

+ folder +

"\nchmod 775 "

+ folder;

system

(command.

c_str()

);//利用chmod和chown函式實現;

#include

#include

#include

void do_chown (

const

char

*file_path,

const

char

*user_name,

const

char

*group_name)

uid = pwd-

>pw_uid;

grp =

getgrnam

(group_name);if

(grp ==

null

) gid = grp-

>gr_gid;if(

chown

(file_path, uid, gid)==-

1)if(

(chmod

(file_path,

0775))

==-1)

}

建立檔案就很簡單了,直接呼叫 fstream 中的 open 函式就可以建立。

//c++

#include

std::fstream fbinary;

fbinary.

open

(filemapbinary[storenum]

;//c

int fd2 =

open

("/tmp/test.svg"

, o_rdwr | o_creat, s_irusr | s_irgrp | s_iroth)

;

因為在使用中主要是讀寫二進位制,所以記錄了一下二進位制的讀寫。

// copy a file

#include

// std::ifstream, std::ofstream

int main (

)

順便記錄一下 linux 下如何檢視二進位制檔案:

vim -b filename

%!xxd -g 1

不包含子資料夾

void

getallfile

(std::string folderpath, std::vector

& vs)

while

((dtr =

readdir

(dir))!=

null

)else

}closedir

(dir)

;}

獲取檔案的資訊,利用 stat 結構體

struct stat 

;

示例:

#include

#include

void

getinfo

(std::string& filename)

在Linux系統上對於檔案許可權的操作 練習題

步驟 1 首先在testdir目錄下建立乙個dir目錄,同時建立組g1 g2 g3和使用者alice tom,在建立的時候就為兩個使用者設定組 2 在上張最後的chmod g s dir命令是設定目錄的sgid許可權,這樣在dir目錄下建立的新檔案的組就和dir目錄的組相同了 之後我們chgrp g...

對於Linux檔案系統的inode的理解

本文基於前人理解,如有不客觀情況,請不吝賜教,共同進步 首先說的是inode 索引節點,information node 其次是要理解硬碟的檔案儲存才能對inode有全面的理解.1.硬碟上最小的儲存單位是扇區 sector 每個扇區儲存512bytes 0.5kb 的資料.linux檔案系統讀取硬碟...

C Linux下的itoa函式

上篇文章說到linux需要itoa函式,下面我就提供乙份跨平台的itoa函式。這個函式會返回字串的長度,在某些場合下會很有用。return the length of result string.support only 10 radix for easy use and better perfor...