chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Linux開發(fā)_介紹目錄編程、標(biāo)準(zhǔn)文件編程

DS小龍哥-嵌入式技術(shù) ? 2022-09-17 15:42 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

【摘要】 介紹Linux下目錄編程、標(biāo)準(zhǔn)文件編程、Linux系統(tǒng)文件接口編程、GDB調(diào)試等知識(shí)點(diǎn)。

任務(wù)1:目錄操作

學(xué)習(xí)系統(tǒng)編程: 主要學(xué)習(xí)系統(tǒng)函數(shù)的調(diào)用。

#include

/*

int argc :表示傳入的參數(shù)數(shù)量

char **argv:存放傳入的參數(shù)數(shù)據(jù),本身是一個(gè)二維數(shù)組。

argv[0] 表示第一個(gè)參數(shù)

argv[1] 表示第二個(gè)參數(shù)

*/

int main(int argc,char **argv)

{

int i;

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

{

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

}

return 0;

}

文件操作函數(shù): fopen、fclose、fread、fwrite…………

目錄操作函數(shù):

#include

#include

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

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

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

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 文件名稱 */

};

?? (練習(xí)目錄操作)

1.?實(shí)現(xiàn)ls *.c 類似的功能。 產(chǎn)品: 視頻播放器、音樂播放器

2.?強(qiáng)化第一題。ls *.c

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

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

結(jié)果: ./work/test/123.c ./work/test/456.c

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

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

結(jié)果: /user/work/test/123.c /user/work/test/456.c

3.?實(shí)現(xiàn)目錄的拷貝。 類似cp命令

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

(1)?實(shí)現(xiàn)一層目錄的拷貝。

(2)?實(shí)現(xiàn)所有目錄的拷貝。(擴(kuò)展)

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

const char *haystack:在哪里查找

const char *needle:查找的數(shù)據(jù)

返回值: 返回查找到的數(shù)據(jù)的首地址

4.?實(shí)現(xiàn)cat命令效果

(1)?示例: cat 123.c

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

5.?實(shí)現(xiàn)du命令的功能。

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

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

1.1 獲取當(dāng)前目錄絕對(duì)地址相關(guān)函數(shù)

#include

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

char *getwd(char *buf);

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

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

1.2 mkdir函數(shù)創(chuàng)建目錄

#include

#include

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

#include

#include

mode_t umask(mode_t mask); //設(shè)置創(chuàng)建目錄或者文件的默認(rèn)權(quán)限

一般在調(diào)用mkdir時(shí),需要先調(diào)用umask(0);

mode_t mode參數(shù)的填寫說明:

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 獲取目錄和文件的狀態(tài)信息

#include

#include

#include

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

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

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

//存放文件的狀態(tài)信息

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的參數(shù):-->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.)

任務(wù)2:帶緩沖區(qū)的文件IO操作

文件中的3個(gè)標(biāo)準(zhǔn)指針:

stderr Standard error output stream. 存放標(biāo)準(zhǔn)錯(cuò)誤信息的文件

stdin Standard input stream. 存放標(biāo)準(zhǔn)輸入信息的文件

stdout Standard output stream. 存放標(biāo)準(zhǔn)輸出信息的文件

??示例:

#include

int main()

{

char buff[10];

while(1)

{

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

{

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

}

}

return 0;

}

帶緩沖區(qū):這一系列函數(shù)適合操作普通文件。

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 *);

任務(wù)3:非緩沖區(qū)的文件IO操作

open()

#include

#include

#include

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

int open(const char *pathname, int flags, mode_t mode); //在創(chuàng)建文件的時(shí)候才調(diào)用。

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);

??作業(yè)

1.?練習(xí)read、write讀寫函數(shù)。

2.?將cat命令編寫使用open一系列函數(shù)實(shí)現(xiàn)。

3.?將stat文件狀態(tài)的時(shí)間轉(zhuǎn)為標(biāo)準(zhǔn)時(shí)間打印出來。

st_atime=1516528093

st_mtime=1516586761

st_ctime=1516586761

以上3個(gè)值是秒單位的時(shí)間。 是從1970年1月1日0時(shí)0分0秒開始計(jì)算。

格式: xxxx年xx月xx日 xx時(shí):xx分:xx秒 星期x

轉(zhuǎn)換時(shí)間:(寫出一個(gè)類似于時(shí)鐘的程序,可以加一個(gè)鬧鐘,判斷時(shí)間是否到達(dá))

(1)?編寫一個(gè)函數(shù)實(shí)現(xiàn)秒單位的時(shí)間轉(zhuǎn)為標(biāo)準(zhǔn)時(shí)間

(2)?編寫一個(gè)函數(shù)實(shí)現(xiàn)將標(biāo)準(zhǔn)時(shí)間轉(zhuǎn)為秒單位

#include

int main(int argc,char**argv)

{

while(1)

{

long cnt=time(NULL); //獲取當(dāng)前系統(tǒng)時(shí)間

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

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

}

return 0;

}

4.?擴(kuò)展作業(yè):重寫一個(gè)scanf與printf函數(shù)。

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

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

…可變形參

任務(wù)4:安裝編輯器

??壓縮與打包名稱

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

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

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

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

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

??運(yùn)行軟件:

(1)?# ./sublime_text

(2)?# ./sublime_text & (后臺(tái)運(yùn)行程序)

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

??linux操作系統(tǒng)保存可執(zhí)行文件的環(huán)境變量: PATH

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

pYYBAGMlPD6Aa3ULAACW_djF3yo579.png

(2)修改環(huán)境變量:# vim /etc/profile (系統(tǒng)開機(jī)的時(shí)候自動(dòng)執(zhí)行)

poYBAGMlPD-AMQi6AADSYnDeXQo992.png

(3) source命令立即生效環(huán)境變量。(只是針對(duì)當(dāng)前的終端)

示例:# source /etc/profile

任務(wù)5: GDB調(diào)試器

使用GDB調(diào)試工具: gdb <可執(zhí)行文件的名稱>

示例: gdb a.out

要支持調(diào)試程序,需要在gcc編譯的時(shí)候加上-g選項(xiàng)參數(shù)。

示例:gcc -g 123.c

??常用的命令:

breakpoints -- 設(shè)置程序的斷點(diǎn)(簡(jiǎn)寫b)。 語法: b <行號(hào)>或者 b <函數(shù)名稱>

running -- 開始運(yùn)行程序(簡(jiǎn)寫run)

list -- 打印出當(dāng)前的代碼

next -- 單步調(diào)試

quit -- 退出調(diào)試界面


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    88

    文章

    11681

    瀏覽量

    218577
  • 編程
    +關(guān)注

    關(guān)注

    90

    文章

    3711

    瀏覽量

    96983
  • GDB調(diào)試
    +關(guān)注

    關(guān)注

    0

    文章

    24

    瀏覽量

    1799
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    Linux開發(fā)嵌入式必備命令速查表

    管理等環(huán)節(jié)輕松應(yīng)對(duì)各種問題。今天,我們整理了一份Linux下嵌入式開發(fā)必備命令速查表,讓你一篇文章就能快速查閱。一、文件目錄管理命令在嵌入式開發(fā)
    的頭像 發(fā)表于 01-19 09:06 ?402次閱讀
    <b class='flag-5'>Linux</b> 下<b class='flag-5'>開發(fā)</b>嵌入式必備命令速查表

    EZ - BLE模塊編程套件(CYBLE - 022001 - PROG)使用指南

    EZ - BLE模塊編程套件(CYBLE - 022001 - PROG)使用指南 作為電子工程師,在藍(lán)牙模塊編程的工作中,一款好用的編程套件能極大提升工作效率。今天就來詳細(xì)介紹一下C
    的頭像 發(fā)表于 12-20 10:35 ?687次閱讀

    飛凌嵌入式ElfBoard-Linux系統(tǒng)中的文件分類

    從本質(zhì)上講,Linux系統(tǒng)就是由文件組成的,一切皆文件linux系統(tǒng)設(shè)計(jì)的核心理念,接下來介紹一下文件
    發(fā)表于 12-09 08:59

    Linux新手通關(guān)!5分鐘掌握文件/目錄管理,告別“找不到北”

    新手入門:Linux?文件?/?目錄管理實(shí)操指南 剛上手?Linux?的小伙伴,是不是常陷入這些?“混亂時(shí)刻”:想找的文件藏在層層
    的頭像 發(fā)表于 11-17 10:42 ?311次閱讀
    <b class='flag-5'>Linux</b>新手通關(guān)!5分鐘掌握<b class='flag-5'>文件</b>/<b class='flag-5'>目錄</b>管理,告別“找不到北”

    一文了解Mojo編程語言

    編程能力 允許直接進(jìn)行系統(tǒng)調(diào)用和文件操作,提供類似 Rust 的內(nèi)存安全機(jī)制(所有權(quán)和借用檢查),避免運(yùn)行時(shí)錯(cuò)誤。 支持零成本抽象,開發(fā)者無需犧牲性能即可編寫高層代碼。 并行與異構(gòu)計(jì)算 內(nèi)置對(duì)多核
    發(fā)表于 11-07 05:59

    Linux 編程語言盤點(diǎn):從內(nèi)核到AI的全棧選擇

    ,認(rèn)為那才代表未來。 其實(shí),這個(gè)問題沒有標(biāo)準(zhǔn)答案。不同語言在 Linux 上的角色,就像工業(yè)系統(tǒng)里的不同模塊——各司其職,協(xié)同配合。 今天,我們從工業(yè)開發(fā)者的視角,聊聊這個(gè)繞不開的話題。 一、
    的頭像 發(fā)表于 11-06 17:05 ?526次閱讀

    飛凌嵌入式ElfBoard-系統(tǒng)應(yīng)用編程文件I/O

    1.1 文件I/O的簡(jiǎn)單概念本章節(jié)僅作為初識(shí)簡(jiǎn)單概念,在后續(xù)章節(jié)會(huì)對(duì)相關(guān)概念進(jìn)行深入介紹。在linux系統(tǒng)中有一個(gè)概念,一切皆文件,所有的設(shè)備都以
    發(fā)表于 10-24 08:57

    Linux系統(tǒng)目錄結(jié)構(gòu)全面剖析

    Linux文件系統(tǒng)采用層次化的目錄結(jié)構(gòu),這種設(shè)計(jì)遵循了Unix哲學(xué)中的"一切皆文件"原則。理解Linux
    的頭像 發(fā)表于 07-21 17:33 ?671次閱讀

    【HZ-T536開發(fā)板免費(fèi)體驗(yàn)】2 - 交叉編譯倉頡編程語言程序到開發(fā)板運(yùn)行

    AARCH64的編譯器(我使用的是WSL2): sudo apt install gcc-aarch64-linux-gnu 然后需要拷貝aarch64開發(fā)包中以下三個(gè)目錄文件到x
    發(fā)表于 07-16 21:27

    如何使用新版本J-Flash編程CW32 MCU?

    1、從Segger公司官網(wǎng)下載安裝最新版本JLink驅(qū)動(dòng),比如V7.96a,安裝目錄下沒有JLinkDevices.xml文件。 2、在C:Users AppDataRoamingSEGGER目錄
    的頭像 發(fā)表于 07-01 15:05 ?613次閱讀
    如何使用新版本J-Flash<b class='flag-5'>編程</b>CW32 MCU?

    Linux中,用新設(shè)置對(duì)CY7C65215重新編程后,如何啟用新設(shè)置?

    Linux 中,用新設(shè)置對(duì) CY7C65215 重新編程后,如何啟用新設(shè)置? 軟件重置或POWER_DRILL2GO循環(huán)? 3.是否有文件教客戶如何使用第 1 項(xiàng)和第 2 項(xiàng)?
    發(fā)表于 05-26 08:23

    Linux文件系統(tǒng)打包及鏡像制作,觸覺智能RK3562開發(fā)板演示

    本文介紹Linux開發(fā)文件系統(tǒng)打包及鏡像制作的方法,演示Linux文件系統(tǒng)打包及鏡像制作,適用
    的頭像 發(fā)表于 04-28 16:45 ?869次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>文件</b>系統(tǒng)打包及鏡像制作,觸覺智能RK3562<b class='flag-5'>開發(fā)</b>板演示

    從零開始馴服Linux(一):ZYNQ-Linux啟動(dòng)文件構(gòu)建全解析

    使用的u-boot源碼路徑為:開發(fā)板資料盤(A 盤)\4_SourceCode\3_Embedded_Linux\資源文件\出廠鏡像相關(guān),在該目錄下有一個(gè)名為
    發(fā)表于 03-20 16:48

    支持遠(yuǎn)程脫機(jī)密文下載加密芯片SMEC系列編程開發(fā)介紹

    這里主要介紹下SMEC80ST、SMEC88SP/ST、SMEC98SP編程開發(fā)板(后文簡(jiǎn)稱SMEC編程器)的遠(yuǎn)程脫機(jī)密文下載功能。芯片資料可在http://www.sinormou
    發(fā)表于 02-14 16:19

    數(shù)字電路編程語言介紹

    數(shù)字電路編程語言是專門為描述和模擬數(shù)字電路而設(shè)計(jì)的編程語言。它們通常具有以下特點(diǎn): 硬件描述語言(HDL) :大多數(shù)數(shù)字電路編程語言都是硬件描述語言,如VHDL和Verilog。這些語言允許設(shè)計(jì)師以
    的頭像 發(fā)表于 01-24 09:39 ?1543次閱讀