在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Linux開發_介紹目錄編程、標準文件編程

DS小龍哥-嵌入式技術 ? 2022-09-17 15:42 ? 次閱讀

【摘要】 介紹Linux下目錄編程、標準文件編程、Linux系統文件接口編程、GDB調試等知識點。

任務1:目錄操作

學習系統編程: 主要學習系統函數的調用。

#include

/*

int argc :表示傳入的參數數量

char **argv:存放傳入的參數數據,本身是一個二維數組。

argv[0] 表示第一個參數

argv[1] 表示第二個參數

*/

int main(int argc,char **argv)

{

int i;

for(i=0;i;i++)<>

{

printf("argv[%d]=%s\n",i,argv[i]);

}

return 0;

}

文件操作函數: fopen、fclose、fread、fwrite…………

目錄操作函數:

#include

#include

DIR *opendir(const char *name); //打開目錄

struct dirent *readdir(DIR *dirp); //讀取目錄信息

int closedir(DIR *dirp); //關閉目錄

struct dirent {

ino_t d_ino; /* inode number */

off_t d_off; /* offset to the next dirent */

unsigned short d_reclen; /* length of this record */

unsigned char d_type; /* type of file; not supported by all file system types */

char d_name[256]; /* filename 文件名稱 */

};

?? (練習目錄操作)

1.?實現ls *.c 類似的功能。 產品: 視頻播放器、音樂播放器

2.?強化第一題。ls *.c

(1)?拼接路徑: /mnt/hgfs/linux-share-dir/test/test.c (通過命令行傳入路徑)

示例:./a.out ./work/test .c

結果: ./work/test/123.c ./work/test/456.c

(2)?獲取絕對路徑: /mnt/hgfs/linux-share-dir/test/test.c

示例:./a.out ./work/test .c

結果: /user/work/test/123.c /user/work/test/456.c

3.?實現目錄的拷貝。 類似cp命令

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

(1)?實現一層目錄的拷貝。

(2)?實現所有目錄的拷貝。(擴展)

char *strstr(const char *haystack, const char *needle);

const char *haystack:在哪里查找

const char *needle:查找的數據

返回值: 返回查找到的數據的首地址

4.?實現cat命令效果

(1)?示例: cat 123.c

(2)?示例: cat 123.c -n (擴展作業)

5.?實現du命令的功能。

(1)?示例: du 123.c 顯示出文件的大小

(2)?示例: du 123.c -h 使用合理的單位顯示出文件的大小(擴展作業)

1.1 獲取當前目錄絕對地址相關函數

#include

char *getcwd(char *buf, size_t size);

char *getwd(char *buf);

char *get_current_dir_name(void); //獲取絕對路徑

int chdir(const char *path); //修改當前目錄,即切換目錄,相當于 cd 命令

1.2 mkdir函數創建目錄

#include

#include

int mkdir(const char *pathname, mode_t mode); // 777

#include

#include

mode_t umask(mode_t mask); //設置創建目錄或者文件的默認權限

一般在調用mkdir時,需要先調用umask(0);

mode_t mode參數的填寫說明:

S_IRWXU 00700 user (file owner) has read, write and exe-cute permission

S_IRUSR 00400 user has read permission

S_IWUSR 00200 user has write permission

S_IXUSR 00100 user has execute permission

S_IRWXG 00070 group has read, write and execute permis-sion

S_IRGRP 00040 group has read permission

S_IWGRP 00020 group has write permission

S_IXGRP 00010 group has execute permission

S_IRWXO 00007 others have read, write and execute per-mission

S_IROTH 00004 others have read permission

S_IWOTH 00002 others have write permission

S_IXOTH 00001 others have execute permission

1.3 獲取目錄和文件的狀態信息

#include

#include

#include

int stat(const char *path, struct stat *buf); //直接獲取源文件的狀態()

int fstat(int fd, struct stat *buf); //獲取已經打開成功的文件狀態

int lstat(const char *path, struct stat *buf); //不區分鏈接文件

//存放文件的狀態信息

struct stat {

dev_t st_dev; /* ID of device containing file */

ino_t st_ino; /* inode number */

mode_t st_mode; /* protection */

nlink_t st_nlink; /* number of hard links */

uid_t st_uid; /* user ID of owner */

gid_t st_gid; /* group ID of owner */

dev_t st_rdev; /* device ID (if special file) */

off_t st_size; /* 保存文件的大小*/

blksize_t st_blksize; /* blocksize for file system I/O */

blkcnt_t st_blocks; /* number of 512B blocks allocated */

time_t st_atime; /* time of last access */

time_t st_mtime; /* time of last modification */

time_t st_ctime; /* time of last status change */

};

m的參數:-->st_mode

S_ISREG(m) 判斷是否是普通文件

S_ISDIR(m) directory? 目錄

S_ISCHR(m) character device?

S_ISBLK(m) block device?

S_ISFIFO(m) FIFO (named pipe)?

S_ISLNK(m) symbolic link? (Not in POSIX.1-1996.)

S_ISSOCK(m) socket? (Not in POSIX.1-1996.)

任務2:帶緩沖區的文件IO操作

文件中的3個標準指針:

stderr Standard error output stream. 存放標準錯誤信息的文件

stdin Standard input stream. 存放標準輸入信息的文件

stdout Standard output stream. 存放標準輸出信息的文件

??示例:

#include

int main()

{

char buff[10];

while(1)

{

if(fread(buff,1,10,stdin)>0)

{

printf("讀出的數據=%s\n",buff);

}

}

return 0;

}

帶緩沖區:這一系列函數適合操作普通文件。

size_t fread(void *restrict, size_t, size_t, FILE *restrict);

int fseek(FILE *, long, int);

size_t fwrite(const void *restrict, size_t, size_t, FILE *restrict);

int fclose(FILE *);

任務3:非緩沖區的文件IO操作

open()

#include

#include

#include

int open(const char *pathname, int flags);

int open(const char *pathname, int flags, mode_t mode); //在創建文件的時候才調用。

ssize_t read(int fd, void *buf, size_t count);

ssize_t write(int fd, const void *buf, size_t count);

int close(int fd);

??作業

1.?練習read、write讀寫函數。

2.?將cat命令編寫使用open一系列函數實現。

3.?將stat文件狀態的時間轉為標準時間打印出來。

st_atime=1516528093

st_mtime=1516586761

st_ctime=1516586761

以上3個值是秒單位的時間。 是從1970年1月1日0時0分0秒開始計算。

格式: xxxx年xx月xx日 xx時:xx分:xx秒 星期x

轉換時間:(寫出一個類似于時鐘的程序,可以加一個鬧鐘,判斷時間是否到達)

(1)?編寫一個函數實現秒單位的時間轉為標準時間

(2)?編寫一個函數實現將標準時間轉為秒單位

#include

int main(int argc,char**argv)

{

while(1)

{

long cnt=time(NULL); //獲取當前系統時間

sleep(1); //睡眠一秒鐘

printf("cnt=%d\n",cnt);

}

return 0;

}

4.?擴展作業:重寫一個scanf與printf函數。

int printf(const char *format, ...);

int scanf(const char *format, ...);

…可變形參

任務4:安裝編輯器

??壓縮與打包名稱

.1.1 解壓命令的使用格式: tar -xvf <壓縮文件的名稱>

1.1.?想要指定解壓之后文件存放的位置: tar -xvf <壓縮文件的名稱> -C <指定的目錄>

1.2 打包指定文件夾或者文件: tar -cvf <新文件的名稱> <要打包的目錄>

示例: [root@wbyq test]# tar cvf SublimeText2.tar SublimeText2

注意:壓縮包不能直接在共享目錄下解壓。

??運行軟件:

(1)?# ./sublime_text

(2)?# ./sublime_text & (后臺運行程序)

??切換中文輸入法:Ctrl+空格

??linux操作系統保存可執行文件的環境變量: PATH

(1)?打印環境變量的值:echo $PATH

pYYBAGMlPD6Aa3ULAACW_djF3yo579.png

(2)修改環境變量:# vim /etc/profile (系統開機的時候自動執行)

poYBAGMlPD-AMQi6AADSYnDeXQo992.png

(3) source命令立即生效環境變量。(只是針對當前的終端)

示例:# source /etc/profile

任務5: GDB調試器

使用GDB調試工具: gdb <可執行文件的名稱>

示例: gdb a.out

要支持調試程序,需要在gcc編譯的時候加上-g選項參數。

示例:gcc -g 123.c

??常用的命令:

breakpoints -- 設置程序的斷點(簡寫b)。 語法: b <行號>或者 b <函數名稱>

running -- 開始運行程序(簡寫run)

list -- 打印出當前的代碼

next -- 單步調試

quit -- 退出調試界面


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11304

    瀏覽量

    209521
  • 編程
    +關注

    關注

    88

    文章

    3616

    瀏覽量

    93738
  • GDB調試
    +關注

    關注

    0

    文章

    24

    瀏覽量

    1447
收藏 人收藏

    評論

    相關推薦

    MCU編程語言和開發環境介紹

    微控制器單元(Microcontroller Unit,簡稱MCU)是嵌入式系統的核心,廣泛應用于各種電子產品中。隨著技術的發展,MCU編程語言和開發環境也在不斷進步,以適應不同的應用需求。 1.
    的頭像 發表于 11-01 11:51 ?729次閱讀

    Linux應用編程的基本概念

    Linux應用編程涉及到在Linux環境下開發和運行應用程序的一系列概念。以下是一些涵蓋Linux應用
    的頭像 發表于 10-24 17:19 ?233次閱讀

    Linux開發怎么學?

    令是使用 Linux 的基礎,包括文件操作、目錄管理、用戶管理、進程管理、網絡管理等方面。可以通過閱讀相關的書籍、在線教程等方式學習。以下是常用的命令實例。 # 列出當前目錄下的
    發表于 10-10 14:34

    飛凌嵌入式ElfBoard ELF 1板卡-Linux C接口編程入門之文件I/O

    對待,例如:設備文件Linux將硬件設備抽象為文件,可以通過設備文件進行訪問和操作。例如,ELF1開發板的uart7接口可以通過/dev/
    發表于 10-09 15:38

    Linux文件系統的掛載過程

    Linux文件系統(rootfs)是Linux系統中所有其他文件系統和目錄的起點,它是內核啟動時掛載的第一個
    的頭像 發表于 10-05 16:50 ?424次閱讀

    linux開發板和單片機開發的區別

    、PIC等,處理能力和內存容量相對較低。 操作系統 Linux開發板通常使用Linux操作系統,具有豐富的軟件資源和開發工具。單片機開發則通
    的頭像 發表于 08-30 15:30 ?804次閱讀

    Linux 驅動開發與應用開發,你知道多少?

    一、Linux驅動開發與應用開發的區別開發層次不同:Linux驅動開發主要是針對硬件設備進行
    的頭像 發表于 08-30 12:16 ?792次閱讀
    <b class='flag-5'>Linux</b> 驅動<b class='flag-5'>開發</b>與應用<b class='flag-5'>開發</b>,你知道多少?

    工業機器人的四種編程(示教編程、離線編程、自增強現實編程編程)剖析!

    和工作量,提高編程效率,實現編程的自適應性,從而提高生產效率,是機器人編程技術發展的終極追求。本文將就機器人編程技術的發展作一介紹,希望能給
    的頭像 發表于 08-30 12:14 ?2515次閱讀
    工業機器人的四種<b class='flag-5'>編程</b>(示教<b class='flag-5'>編程</b>、離線<b class='flag-5'>編程</b>、自增強現實<b class='flag-5'>編程</b>主<b class='flag-5'>編程</b>)剖析!

    esp32用什么軟件編程

    。 概述 ESP32具有豐富的外設接口和靈活的編程方式,支持多種編程語言和開發環境。本文將詳細介紹ESP32的編程軟件,包括
    的頭像 發表于 08-19 17:24 ?3529次閱讀

    鴻蒙開發文件管理:【@ohos.environment (目錄環境能力)】

    該模塊提供環境目錄能力,獲取內存存儲根目錄、公共文件目錄的JS接口。
    的頭像 發表于 06-13 10:27 ?522次閱讀
    鴻蒙<b class='flag-5'>開發文件</b>管理:【@ohos.environment (<b class='flag-5'>目錄</b>環境能力)】

    編程電源如何編程

    編程電源如何編程? 可編程電源是一種可以調節輸出電壓和電流的電源設備,廣泛應用于電子設備測試、研發和生產等領域。通過編程,用戶可以根據需要設置電源的輸出參數,實現自動化測試和控制。本
    的頭像 發表于 06-10 15:24 ?1342次閱讀

    fpga開發需要掌握哪些編程語言

    FPGA(現場可編程門陣列)開發涉及多種編程語言和技術.
    的頭像 發表于 03-27 14:34 ?1477次閱讀

    OpenHarmony內核編程實戰

    編寫程序,讓開發板在串口調試工具中輸出”Hello,OpenHarmony“。▍操作在源碼的根目錄中有名為”applications“的文件,他存放著應用程序樣例
    的頭像 發表于 03-27 08:31 ?836次閱讀
    OpenHarmony內核<b class='flag-5'>編程</b>實戰

    fpga用的是什么編程語言 fpga用什么語言開發

    和VHDL都是用于邏輯設計的硬件描述語言,并且都已成為IEEE標準。它們能形式化地抽象表示電路的結構和行為,支持邏輯設計中層次與領域的描述,具有電路仿真與驗證機制以保證設計的正確性,并便于文檔管理和設計重用。 fpga用什么語言開發 FPGA(現場可
    的頭像 發表于 03-14 17:09 ?3510次閱讀

    fpga開發板與linux開發板區別

    FPGA開發板與Linux開發板是兩種不同的硬件開發平臺,各自具有不同的特點和應用場景。在以下的文章中,我將詳細介紹FPGA
    的頭像 發表于 02-01 17:09 ?2265次閱讀
    主站蜘蛛池模板: 国产精品高清一区二区三区不卡 | 久久精品隔壁老王影院| 91网址在线播放| 亚欧色| 韩国三级hd中文字幕久久精品| 手机福利片| 欧美性色xo影院在线观看| 欧洲freexxxx性| 天天爽夜夜爽视频| 日日操夜夜操狠狠操| 欧美色频| 免费在线黄色网址| 日本三级黄在线观看| 欧美ww| 免费久久久久| 一级片成人| 寡妇一级a毛片免费播放| 1024手机看片国产旧版你懂的| 亚洲国产成人精彩精品| 国产妇女在线| 欧美一区二区三区男人的天堂| 深夜性久久| 天天透天天射| 短篇禁伦小说| 国产综合色在线视频区色吧图片| 国内色视频| 特级毛片免费视频| 亚洲爱v| 国产精品爱久久久久久久三级| 好硬好大好爽女房东在线观看| 91久久人澡人人添人人爽| 色亚洲色图| 全免费午夜一级毛片真人| 亚洲免费网| 午夜精品久久久久久99热 | 国产一区二区三区四卡| 99草在线观看| 全部在线播放免费毛片| 老湿司午夜爽爽影院榴莲视频| 香蕉视频网站在线播放| 一级大片免费看|