真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Linux指令學(xué)習(xí)-創(chuàng)新互聯(lián)

目錄

成都創(chuàng)新互聯(lián)公司是一家專注于成都網(wǎng)站制作、成都網(wǎng)站建設(shè)與策劃設(shè)計(jì),鐵東網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)10年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:鐵東等地區(qū)。鐵東做網(wǎng)站價(jià)格咨詢:18980820575

2023.1.4? ?C語(yǔ)言

2023.1.5 C語(yǔ)言

2023.1.6 Linux函數(shù) write.c? open.c? cp.c? fopen.c? fread.c? fputs.c

2023.1.7 Makefile? ?fork.c

2023.1.9 Makefile

2023.1.10 git操作

2023.1.11? pipe.c? mkfifio,c mkpipe.c? msg.c msg_tx.c? ?msg_rx.c

2023.1.12? msg_service.c? msg_client.c? ?shm.c? my_ipcrm,c? shm_tx.c? shm_rx.c? kill.c

2023.1.13? sem.c? pv.c

2023.1.16? pthread.c? ? pthread_exit.c? ?pthread_uncle.c

2023.1.17? 條件變量? 信號(hào)量pthread_cond.c? ?shell? socket_tcp.c

2023.1.18? socket_tcp.c? client.c? ?一個(gè)客戶端一個(gè)服務(wù)端


yy? p復(fù)制粘貼

cd目錄

diff比較,cp之后,diff test1.c test2.c? ?? ? touch建文件? ? ? ? ctrl+c退出死

緩存:用戶——庫(kù)緩存——內(nèi)核 >>>>>>>>>加\n調(diào)用庫(kù)緩存? 四種:\n? ?內(nèi)存滿了? 調(diào)用了系統(tǒng)函數(shù)? ? fflush:刷新緩存,將用戶緩存寫(xiě)到內(nèi)核緩存? ?stderr無(wú)緩存? ?stdout直接寫(xiě)

FILE數(shù)據(jù)流

2023.1.4? ?C語(yǔ)言

register 盡量將變量限制在寄存器,訪問(wèn)迅速

const 修飾只讀變量?

n%m ==>> [0 ~ m-1]可以用來(lái)求數(shù)

if()? ?while()? ? ()里面非0都是真

<<左移是乘法? ?m<<1? ? m*2? ? ? m<

>>右移? ?-1負(fù)數(shù)右移永遠(yuǎn)不會(huì)變成空

11111111(補(bǔ)碼)? ?當(dāng)成-1

A|1=1? ?A&0=0? ? ? a | (0x1<

*p 指針變量? ? char *p 一次讀一個(gè)字節(jié)? ? int *p一次讀四個(gè)字節(jié) 這個(gè)數(shù)據(jù)類型就是指針讀取方法

&a取地址,門牌號(hào)的最小值,最小地址

2023.1.5 C語(yǔ)言

char *p 一看就想到字符串

const char *p? ? 字符串? 指針變量,指向不同地址但是里面內(nèi)容不可以變化,只讀

char *p當(dāng)成const char *p

char * const p 指向固定地址,內(nèi)容可以變化? ?硬件資源

const char * const p? 地址不能變,內(nèi)容不能變

結(jié)構(gòu)體指針

struct stu
{
int num;
char *name;//字符串

}boy1 = {   };

struct stu *pst;
pst = &boy1;

printf(   ,  boy1.num  boy1.name);
             (*pst).num  (*pst).name;
             pst->num   pst->name;//三種都可以

靜態(tài)鏈表,都有一個(gè)指針指向下一個(gè),例如:struct stu a,b,c,*head

head = &a;? ? head = head->next;

a.next=&b;

b.next=&c;

動(dòng)態(tài)鏈表,p1在前面走,p2在后面追,p1到后面之后,將p2的next指向p1,p2是連接前后的作用

cp -l test1 test4 硬連接? ? ls -il索引結(jié)點(diǎn)號(hào)是一樣的 原文件沒(méi)了依然保留數(shù)據(jù)

cp -s test1 test5 軟連接? 索引結(jié)點(diǎn)號(hào)不同? ? ? ? ? ? ? ? 原文件沒(méi)了就沒(méi)了

ls -l test1

grep -v t test1? ?? ? ?在test1中搜索與t不匹配的

grep [tf] test1,正則表達(dá)式,搜索包含t和f的字符串

gzip? ?gunzip? ?gzcat壓縮相關(guān)

2023.1.6 Linux函數(shù) write.c? open.c? cp.c? fopen.c? fread.c? fputs.c

gcc -c hello.c 編譯生成hello.o文件
gcc -o hello hello.c 生成可執(zhí)行文件hello? 或者? gcc hello.c -o hello

Open: ?fd = open( “?mm ”, ?O_RDONLY | O_CREAT,0755)//只讀,沒(méi)有就創(chuàng)建,-1失敗,其他成功,權(quán)限

Close:close(fd)

perror(“why”)隨便寫(xiě),打印出來(lái)

strcpy ( writebuff , test ) ,字符串復(fù)制,將test復(fù)制到writebuff

write( fd , &writebuff[0] , 11)文件描述符,首地址,數(shù)據(jù)長(zhǎng)度,寫(xiě)的是內(nèi)存,char *p 首地址就是p,字符串長(zhǎng)度就是strlen(str);? 字符串有\(zhòng)0多加一位

write read ,往fd所指的里面寫(xiě),從fd所指的里面讀 ,read返回值是讀取的字節(jié)數(shù)

open(O_APPEND)? 和? ?lseek(SEEK_END)光標(biāo)移到最后? lseek可以負(fù)數(shù)

argc 有多少參數(shù) ,? ?argv? 字符串?dāng)?shù)組

ndd,刪除光標(biāo)下幾行

數(shù)組初始化:memset(buffer? ,? ?0? ?,128);初始化空間,將已經(jīng)開(kāi)辟的buffer的128個(gè)空間賦為0

標(biāo)準(zhǔn)IO可移植性強(qiáng)于文件IO,fopen是標(biāo)準(zhǔn)IO? ?頭文件stdio.h

FILE類型的指針fp??

fread(readbuff , 4,2,fp)將fp對(duì)應(yīng)的東西讀到readbuff去

fwrite(writebuff, 4,1,fp)將writebuff里面東西寫(xiě)到fp對(duì)應(yīng)里面

2023.1.7 Makefile? ?fork.c

fgets 讀,會(huì)將\n一起讀入,gets不會(huì)

fp文件標(biāo)識(shí)符,文件指針,fp當(dāng)成一個(gè)代號(hào),指代一個(gè)東西

fprintf(fp,xxxxxxxx),將xxxxx寫(xiě)到fp指代的文件里面

sprintf(buf , "xxxx")將xxxx字符串寫(xiě)到buf里面

靜態(tài)庫(kù),首先將.c編譯成.o,再將.o? 通過(guò)ar cr編譯成libxxx.a,gcc hello.c -o hello ./libtest.a 生成執(zhí)行文件a.out ,再執(zhí)行./hello可以驗(yàn)證

動(dòng)態(tài)庫(kù),gcc -shared -fPIC -o libtest.so test.c,將.c編譯成.so加-shared -fPIC

比如sub求和是一個(gè)庫(kù),調(diào)用它,就是自建.h頭文件

gcc -o main main.c -L. -lfifile 編譯 main.c 就會(huì)把靜態(tài)函數(shù)庫(kù)整合進(jìn) main 。 靜態(tài)庫(kù)在編譯時(shí),動(dòng)態(tài)庫(kù)在運(yùn)行時(shí)載入 Makefile:? ? 目標(biāo)(我們想生成的.0或者a.out):依賴文件 ? ? ? ? ? ? ? ? ? ? ? ? 命令 ? ? ? ? ? ? ? ? ? ? ? ? 命令 生成這個(gè)目標(biāo),需要這些依賴,有了依賴了,通過(guò)下面的命令來(lái)生成目標(biāo)。 .o根據(jù)規(guī)則更新和重建 2023.1.9 Makefile

makefile,第一個(gè)目標(biāo)文件是最終目標(biāo)? ? .i? --->.s? ?---> .o? ?---> 可執(zhí)行文件

gcc -c xxxx.c -o xxxx.o? 匯編

.PHONY: 定義偽目標(biāo)關(guān)鍵字

.PHONY:
clear:
    rm -rf xxx

? :=? 恒等于

TAR = test
OBJ = circle.o cube.o
CC := gcc
test : circle.o cube.o
    gcc -c circle.o cube.o -o test
//替換
$(TAR) :$(OBJ )
    $(CC) -c $(OBJ ) -o $(TAR )

%.c %.o代表任意的.c .o? ? ? *.c *.o所有的.c .o

%.c :%.o
    $(CC) -c %.c -o %.o

$@所有的目標(biāo)文件,$^所有的依賴文件

父子進(jìn)程執(zhí)行fork的不同代碼段

ps aux | grep xxx

kill -l? ? ?

2023.1.10 git操作

提交到版本庫(kù)

git status? ? ?暫存區(qū)狀態(tài)

git add xxxx.xx(沒(méi)有就touch創(chuàng)建文件,然后vi文件寫(xiě)入東西)

git commit -m "備注"? ? 把暫存區(qū)的改動(dòng)提交到庫(kù)里面

git push origin master 同步文件到云庫(kù)(推送)

git init 初始化

git remote add origin 加網(wǎng)址

git push origin master 推送上去

git fetch從遠(yuǎn)程拉取代碼? ? ? ? ? ? ?git fetch+git merge = git pull

git branch? ?有*master? ?*代表目前處于的分支

~home目錄? .?當(dāng)前目錄? ..上級(jí)目錄

Remote是遠(yuǎn)程倉(cāng)庫(kù),Repository是本地倉(cāng)庫(kù),workspace是自己的項(xiàng)目工作區(qū),在工作區(qū)的項(xiàng)目進(jìn)行add(添加)、commit(提交)、push(發(fā)送)等操作至遠(yuǎn)程倉(cāng)庫(kù),若有新更新的內(nèi)容,需要在push之前先從遠(yuǎn)程倉(cāng)庫(kù)pull(拉)下來(lái) 更新的內(nèi)容,再進(jìn)行push到遠(yuǎn)程倉(cāng)庫(kù) 。

git add -A 保存所有的修改
git add . 保存新的添加和修改,但是不包括刪除
git add -u 保存修改和刪除,但是不包括新建文件

2023.1.11? pipe.c? mkfifio,c mkpipe.c? msg.c msg_tx.c? ?msg_rx.c

僵尸進(jìn)程,用wait? ?waitpid阻塞,等待子進(jìn)程

dup2(oldfd,newfd)? 將oldfd內(nèi)容重定向到newfd,就是把oldfd的指向復(fù)制一份到newfd(原來(lái)newid指向的文件被關(guān)閉),如此一來(lái),再向newfd寫(xiě)輸入就如同向oldfd寫(xiě)輸入一樣了。

exit(0)? 默認(rèn)0表示正常退出

ipcs -q查看消息隊(duì)列? ? ?system(ipcs -q)系統(tǒng)函數(shù),在運(yùn)行時(shí)自動(dòng)運(yùn)行ipcs -q

route 命令用于顯示和操作IP路由表;

rx tx進(jìn)程間通信

2023.1.12? msg_service.c? msg_client.c? ?shm.c? my_ipcrm,c? shm_tx.c? shm_rx.c? kill.c

%3d表示取三位整數(shù);

ipcs是Linux下顯示進(jìn)程間通信設(shè)施狀態(tài)

ipcs -m,顯示活動(dòng)的共享內(nèi)存信息

ipcm??刪除ipc(清除共享內(nèi)存信息)

stdin標(biāo)準(zhǔn)輸入,從鍵盤輸入

extern void *memcpy(void *dest, void *src, unsigned int count); ? ?由src所指內(nèi)存區(qū)域復(fù)制count個(gè)字節(jié)到dest所指內(nèi)存區(qū)域

C 庫(kù)函數(shù)?int strcmp(const char *str1, const char *str2)?把?str1?所指向的字符串和?str2?所指向的字符串進(jìn)行比較。

如果返回值< 0,則表示 str1 小于 str2。

如果返回值 >0,則表示 str2 小于 str1。

如果返回值 = 0,則表示 str1 等于 str2。

atoi把字符串轉(zhuǎn)換為整數(shù)? ?ii=atoi("123abc"); printf("ii=%d\n",ii); // 輸出ii=123,合法數(shù)字后的abc被忽略。

建立IPC通訊,需要指定一個(gè)id找到對(duì)應(yīng)的消息隊(duì)列、共享內(nèi)存,成功就返回一個(gè)key_t值,就是兩者拴在一起的紐帶,ftok

./a.out a b argv[]就有三個(gè),參數(shù),argc是參數(shù)個(gè)數(shù)

argv[0]就是./a.out

argv[1]就是a

argv[2]就是b

參數(shù)個(gè)數(shù)包括程序名本身,argv數(shù)組也包含程序名并將它作為第一個(gè)元素,其中argc是程序參數(shù)的個(gè)數(shù),argv是一個(gè)代表參數(shù)自身的字符串?dāng)?shù)組

2023.1.13? sem.c? pv.c

pid_t wait(int* wstatus);? ? 若不關(guān)心進(jìn)程的結(jié)束狀態(tài)(結(jié)束原因)時(shí),可以傳NULL進(jìn)去!

alarm函數(shù),alarm(7)倒計(jì)時(shí)7秒,這7秒執(zhí)行主函數(shù),signa(14,myfun); 7秒到了之后執(zhí)行myfun函數(shù),再回到主函數(shù)

ipcs

ipcs -a :顯示全部可以顯示的信息? ? all

ipcs -q:顯示活動(dòng)的消息隊(duì)列信息? ? ? ? ? ? queue

ipcs -m:顯示活動(dòng)的共享內(nèi)存信息? ? memory? share

ipcs -s:顯示活動(dòng)的信號(hào)量信息? ? ? ? ?semget

ipcrm -m id:刪除共享內(nèi)存標(biāo)識(shí)? ?

ipcrm -q id :刪除消息隊(duì)列標(biāo)識(shí) id和其相關(guān)的消息隊(duì)列和數(shù)據(jù)結(jié)構(gòu)

ipcrm?-s id:刪除信號(hào)標(biāo)識(shí)符id和其相關(guān)的信號(hào)量集及數(shù)據(jù)結(jié)構(gòu)

ipcrm -M key:刪除由關(guān)鍵字創(chuàng)建的共享內(nèi)存標(biāo)識(shí)

ipcrm -Q key:刪除由關(guān)鍵字key創(chuàng)建的消息隊(duì)列和其相關(guān)的消息隊(duì)列和數(shù)據(jù)結(jié)構(gòu)

ipcs -S key:刪除由關(guān)鍵字key創(chuàng)建的信號(hào)量標(biāo)識(shí)及其相關(guān)的信號(hào)量集及數(shù)據(jù)結(jié)構(gòu)

ftok(把一個(gè)已存在的路徑名和一個(gè)整數(shù)標(biāo)識(shí)符轉(zhuǎn)換成IPC鍵值,key)

malloc申請(qǐng)完內(nèi)存后要判斷是否成功

常量==,在等號(hào)前面

進(jìn)程殺死自己:exit(1);

?????????????kill(getpid(),SIGKILL);

?????????????raise(SIGKILL)

守護(hù)進(jìn)程,fork父親死,子進(jìn)程創(chuàng)建會(huì)話操作,pid_t setid(void);

chomd a+x g+w? 所有+可執(zhí)行? 組內(nèi)+可寫(xiě)

a代表所有用戶;

g代表同組用戶;

o代表其他用戶;

rm -i:進(jìn)行任何刪除操作前必須先確認(rèn)。? ?alias rm='rm-i'? 用后面的名字代替前面的名字

ln(link files)命令是一個(gè)非常重要命令,它的功能是為某一個(gè)文件在另外一個(gè)位置建立一個(gè)同步的鏈接

普通用戶的標(biāo)識(shí)符為:$

root用戶的標(biāo)識(shí)符為:#

2023.1.16? pthread.c? ? pthread_exit.c? ?pthread_uncle.c

(int *)ptr強(qiáng)制轉(zhuǎn)化,是個(gè)地址,*(int *)ptr取地址

線程的回調(diào)函數(shù)看一下

線程分離屬性,1.初始化? ?2.設(shè)置參數(shù)? 3.在創(chuàng)建中讓它自帶分離屬性

互斥鎖:讓訪問(wèn)變成串行,同時(shí)只有一個(gè)線程可以訪問(wèn),假如p可以,賦值q=p,則q不能訪問(wèn)

原子操作就是: 不可中斷的一個(gè)或者一系列操作, 也就是不會(huì)被線程調(diào)度機(jī)制打斷的操作

讀寫(xiě)鎖,讀的時(shí)候鎖起來(lái),寫(xiě)的時(shí)候鎖起來(lái),寫(xiě)的優(yōu)先級(jí)更高,讀的時(shí)候可以加鎖,寫(xiě)的時(shí)候獨(dú)占,讀寫(xiě)鎖:

????????讀:并行 ????????寫(xiě):串行

tar-zcvf 目標(biāo)文件 源文件

z表示使用gzip壓縮

j表示使用bzip2壓縮

c表示壓縮

x表示解壓縮

逗號(hào)運(yùn)算符返回值是最后的表達(dá)式的值

  1. printf("%3.10s\n",a); //這里m雖然取值為3,但是n的值大于m,所以取值n,保證n個(gè)字符輸出

  2. printf("%12.3s\n",a); //輸出" myn"注意,n取的是元素個(gè)數(shù),不包括空格鏈接

    A:ls是list的縮寫(xiě),用來(lái)顯示當(dāng)前目錄下面文件的信息;

    B:df是disk free的縮寫(xiě),用來(lái)顯示文件系統(tǒng)中不同磁盤的使用情況;

    C:du是disk usage的縮寫(xiě),顯示當(dāng)前目錄或者當(dāng)前文件的占用的塊大小;

    D:find命令作用在目錄下,用來(lái)查找指定目錄或者當(dāng)前目錄下的文件。

2023.1.17? 條件變量? 信號(hào)量pthread_cond.c? ?shell? socket_tcp.c

rand()%1000;//0-999?

注意結(jié)構(gòu)體數(shù)組要在定義時(shí)就直接初始化

對(duì)于未初始化的數(shù)據(jù)如果是數(shù)值型,則會(huì)自動(dòng)賦值為0,對(duì)于字符型,會(huì)自動(dòng)賦初值為NULL

如果是數(shù)組:   struct Student stu[10];   就是   memset(stu,0,sizeof(struct Student)*10);

pthread_cond_wait? ,?將已經(jīng)上鎖的mutex解鎖該函數(shù)解除阻塞,對(duì)互斥鎖加鎖

信號(hào)量:消費(fèi)者阻塞,生產(chǎn)者生產(chǎn)減減給消費(fèi)者使用資源,消費(fèi)者再返還資源給生產(chǎn)者,加加

IP 地址為 32 為(Ipv4)或者 128 位(Ipv6) git命令合并代碼:(1)git merge;(2)git pull;(3)git cherry-pick
產(chǎn)生死鎖的四個(gè)必要條件:
(1)?互斥條件:一個(gè)資源每次只能被一個(gè)進(jìn)程使用。
(2)?請(qǐng)求與保持條件:一個(gè)進(jìn)程因請(qǐng)求資源而阻塞時(shí),對(duì)已獲得的資源保持不放。
(3)?不剝奪條件:進(jìn)程已獲得的資源,在使用完之前,不能強(qiáng)行剝奪。
(4)?循環(huán)等待條件:若干進(jìn)程之間形成一種頭尾相接的循環(huán)等待資源關(guān)系。

# Shell常見(jiàn)的變量之一系統(tǒng)變量,主要是用于對(duì)參數(shù)判斷和命令返回值判斷時(shí)使用,系統(tǒng)變量詳解如下:

$0 ?? ??? ?當(dāng)前腳本的名稱;
$n ?? ??? ?當(dāng)前腳本的第n個(gè)參數(shù),n=1,2,…9;
$* ?? ??? ?當(dāng)前腳本的所有參數(shù)(不包括程序本身);
$# ?? ??? ?當(dāng)前腳本的參數(shù)個(gè)數(shù)(不包括程序本身);
$? ?? ??? ?令或程序執(zhí)行完后的狀態(tài),返回0表示執(zhí)行成功;
$$ ?? ??? ?程序本身的PID號(hào)。

perror ( )用 來(lái) 將 上 一 個(gè) 函 數(shù) 發(fā) 生 錯(cuò) 誤 的 原 因 輸 出 到 標(biāo) 準(zhǔn) 設(shè)備 (stderr) 。

2023.1.18? socket_tcp.c? client.c? ?一個(gè)客戶端一個(gè)服務(wù)端

TCP服務(wù)端,先建立socket,再bind綁定信息,然后listen監(jiān)聽(tīng),再accept接收,最后recv,接收讀寫(xiě)數(shù)據(jù)

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧


當(dāng)前標(biāo)題:Linux指令學(xué)習(xí)-創(chuàng)新互聯(lián)
網(wǎng)站網(wǎng)址:http://weahome.cn/article/jpdps.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部