嵌入式學習28(linux系統函式之檔案、資料夾管理相關函式)
步入linux系統函式的學習了,隨時隨地都要man一下,忌死記。
linux系統呼叫:即linux作業系統提供的函式,只能用於linux。
命令就是一些函式
1)檔案系統管理相關的系統呼叫
檔案相關操作
file:存放在外存裝置上的一堆資料(記憶體和外存的互動,外存資料存取慢)
普通檔案操作:(open read write lseek close) 輔助函式(stat chmod chown remove )
示例程式碼:求檔案的md5加密
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>
#include "md5.h"
//#define _DEBUG 便於除錯
int get_file_size(const char* name);
int main(int argc,char** argv)
{
if(argc!=2)
{
fprintf(stderr,"引數個數錯誤!\n");//標準錯誤列印
return -1;
}
//open函式的返回值為檔案描述符,用來唯一的標識開啟的檔案
int fd=open(argv[1 ],O_RDONLY);
if(-1==fd)
{
perror("open");//自動新增冒號和原因
}
int len;//存放檔案長度
len=get_file_size(argv[1]);
char* buf=malloc(len);
read(fd,buf,len);//把檔案存到記憶體
#ifdef _DEBUG
printf("檔案長度: %d\n檔案內容:\n%s",len,buf);
#endif
char* md5_val=md5_encrypt(buf,len);
printf("%s\n" ,md5_val);
free(buf);
close(fd);
return 0;
}
int get_file_size(const char* name)
{
struct stat st;
if(-1==stat(name,&st))//stat可以求出一個檔案的所有資訊
{
perror("get_file_size");//系統列印錯誤//列印
return -1;
}
return st.st_size;
}
資料夾相關操作(opendir readdir closedir)
//資料夾的遍歷
#include <stdio.h>
#include <sys/types.h>
#include <dirent.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
void main(int argc,char** argv)
{
if(2!=argc)
{
printf("引數不足\n");
return;
}
DIR* dir=opendir(argv[1]);
if(dir==NULL)
{
// fprintf(stderr,"opendir:%s\n",strerror(errno));
// strerror可以將錯誤代號翻譯成一串字串,errno用於存放最近一次的錯誤
perror("opendir");//errno is set appropriately
return;
}
struct dirent* rp=NULL;
struct stat st;//stat中含有檔案詳細資訊
char name[100];
while(rp=readdir(dir))//while(後接表示式)
{
sprintf(name,"%s/%s",argv[1],rp->d_name);
stat(name,&st);
if(S_ISDIR(st.st_mode))
continue;
if(strcmp(rp->d_name,".")!=0 && strcmp(rp->d_name,"..")!=0)
printf("%s\n",rp->d_name);
}
closedir(dir);
}
相關推薦
嵌入式學習28(linux系統函式之檔案、資料夾管理相關函式)
步入linux系統函式的學習了,隨時隨地都要man一下,忌死記。 linux系統呼叫:即linux作業系統提供的函式,只能用於linux。 命令就是一些函式 1)檔案系統管理相關的系統呼叫 檔
Python檔案和資料夾處理相關函式:刪除、複製、移動
這裡使用的是Python3.7版本,在Win10系統上執行 有關刪除檔案、資料夾的問題,網上有不少資料,但作為一個新手,感覺很多都介紹的模稜兩可,必須要自己測試過才能知道到底是怎麼回事,因此在這裡簡單介紹一下Python處理檔案和資料夾的函式。 目錄 刪除
Linux系統呼叫之檔案函式
先說明可用的檔案I/O函式——開啟檔案,讀檔案,寫檔案等。 但是在Linux中大多數檔案I/O只需要用到5個函式:open、read、write、lseek及close。 一、open函式 呼叫open函式可以開啟或建立一個檔案。 返回值:若成功則返回檔案描述符,若出錯則返回-
Linux系統呼叫之檔案描述符
每個執行的中的程式被稱為程序,他有一些與之關聯的檔案描述符。 檔案描述符就相當於Windows中的File * 指標,標記著檔案資訊,然而我們可以知道檔案描述符為一個非負整數,怎麼用一個非負整數描述一個檔案呢。 在作業系統中,每一個程序都有標記自己的程序控制塊(PCB)。 在PCB中,就
linux系統程式設計之檔案I/O
一、檔案描述符 linux系統中,所有開啟的檔案都對應一個數字,這個數字由系統來分配,稱為檔案描述符。 PCB程序控制塊裡有檔案描述符表,以陣列形式存放於核心區。 一個程序預設開啟3個檔案描述符 STDIN_FILE
VirtualBox內Linux系統怎樣與Windows共享資料夾
轉載自:https://jingyan.baidu.com/article/2fb0ba40541a5900f2ec5f07.html VirtualBox內Linux系統怎樣與Windows共享資料夾 普遍的是在Windows本機用虛擬機器安裝Linux系統,然而Windows本機與虛擬機器內Linux
Linux命令學習:建立刪除檔案、資料夾的命令
今天學習了幾個命令,是建立、刪除檔案和資料夾的,在linux裡,資料夾是目錄,下面說下我學習的命令。 建立資料夾【mkdir】 一、mkdir命令使用許可權 所有使用者都可以在終端使用 mkdir
linux命令學習一 :touch和mkdir 建立檔案和資料夾
一、檢視命令詳情 touch --help mkdir --help 二、常用命令 1、建立檔案: touch filename 2、建立資料夾:mkdir directoryname 可建立父資料夾或建立多個或建立多級資料夾 mkdir -
linux系統中不同顏色的資料夾及根目錄介紹
檔案顏色的代表含義: 藍色:目錄 綠色:可執行檔案 紅色:壓縮檔案 藍綠色:連結檔案 白色:其他檔案 黃色:裝置檔案,其中包括block,char,fifo. 根目錄的簡單介紹: 描述
Java實現zip檔案壓縮(單個檔案、資料夾以及檔案和資料夾的組合壓縮)
Java實現zip檔案壓縮(單個檔案、資料夾以及檔案和資料夾的組合壓縮) 2016年10月04日 23:22:24 ljheee 閱讀數:13215 標籤: 壓縮javazip 更多 個人分類: Java應用 版權宣告:本文為博
python實現將某程式碼檔案複製/移動到指定路徑下 (檔案、資料夾的移動、複製、刪除、重新命名)
用python實現將某程式碼檔案複製/移動到指定路徑下。 場景例如:mv ./xxx/git/project1/test.sh ./xxx/tmp/tmp/1/test.sh (相對路徑./xxx/tmp/tmp/1/不一定存在) # -
Linux 檢視以及修改檔案或資料夾的許可權
1. linux下修改檔案使用者組 chgrp: change group的簡寫,修改檔案所屬的使用者組。 chgrp users test.log 修改後檢視 ls -l -rwxrwx— 1 work users 0 Jun 8 15:46 test.log
Linux隨筆 - Linux統計某資料夾下檔案、資料夾的個數
統計某資料夾下檔案的個數 ls -l |grep "^-"|wc -l 統計某資料夾下目錄的個數 ls -l |grep "^d"|wc -l 統計資料夾下檔案的個數,包括子資料夾裡的 ls -lR|grep "^-"|wc -l 統計/i
【Linux/Ubuntu】查詢檔案和資料夾大小
使用命令列工具du,ls查詢檔案和資料夾大小 du命令 du命令可以檢視資料夾的結構及其大小,可以使用-d引數和-B引數來簡單的查詢檔案/資料夾: 其中-d n代表資料夾的查詢深度,n為向內查詢幾層
兩個linux伺服器互相拷貝檔案或者資料夾
例子: 互相拷貝檔案: scp /etc/mysql/my.cnf [email protected]:/etc/mysql 將mysql配置檔案上傳到136伺服器相應資料夾內 scp [email protected]:/etc/mysql/my.cnf /et
linux scp遠端拷貝檔案及資料夾
1、拷貝本機/home/administrator/test整個目錄至遠端主機192.168.1.100的/root目錄下 程式碼如下: scp -r /home/administrator/test/ [email protected]:/root/
IntelliJ IDEA 如何重新命名變數、檔案、資料夾。--(說高階點就是【重構】)
我表示,我在剛剛使用這個編輯器的時候,還真不知道怎麼去重新命名一個變數,重新命名一個檔案,或者一個資料夾。 理論上講,你要是改動一個地方,那麼,其他所有引用的地方,應該跟著都給自動的改了的。 不然,你一個個的改,要是引用的地方多了去了,那不改死你啊。 所以,這肯定有個方
putty對Linux上傳下載檔案或資料夾 從Windows複製檔案到Linux顯示亂碼問題
putty是一個開源軟體,目前為止最新版本為0.70。對於檔案或資料夾的上傳下載,在Windows下它提供了pscp和psftp兩個命令。 (1).pscp pscp在命令提示符中使用,只要putty(ssh)能夠遠端,就能使用該命令。 pscp [Windows上的路徑,可絕對可相對]
linux|批量建立檔案、資料夾或刪除——萬用字元
前言: 在關於檔案操作的部分,我們之前學到的一些有趣的命令。它有一個問題就是一次只能在一個檔案上執行,效率不高。那麼萬用字元就派上用場了!!! 萬用字元是什麼: 萬用字
Centos系統中檢視檔案和資料夾大小
當磁碟大小超過標準時會有報警提示,這時如果掌握df和du命令是非常明智的選擇。 df可以檢視一級資料夾大小、使用比例、檔案系統及其掛入點,但對檔案卻無能為力。 du可以檢視檔案及資料夾的大小。 兩者配合使用,非常有效。比如用df檢視哪個一級目錄過大,然後用df檢視資料夾或檔