黑馬《linux系統程式設計》學習筆記(從66到70)

2021-09-05 15:11:15 字數 3127 閱讀 8003

六十六. 執行緒的概念

所以執行緒之間通訊,不可以用區域性變數(因為區域性變數在棧裡)

這裡的命令可以知道,各部分大小

六十七. pthread_create執行緒建立函式

arg是執行緒處理函式的引數的內容

寫乙個pthread_create.c

#include #include #include #include #include #include #include //這裡是執行緒對應的標頭檔案

void* myfunc(void* arg)

int main(int argc, const char* argv)

printf("parent pthread id: %lu\n", pthread_self());

//這裡sleep是因為,父執行緒和子執行緒也會競爭cpu。

//如果父執行緒先結束,那麼則整個程式釋放,子執行緒來不及執行,就結束了

sleep(1);

return 0;

}

執行一下

[root@vm_0_15_centos 8day]# gcc pthread_create.c -lpthread

[root@vm_0_15_centos 8day]# ls

a.out process_r.c pthread_create.c pthread_uncle.c

deamon.c process_work.c pthread_exit.c setsid.c

loop_pthread_create.c pthread_attr.c pthread_join.c

[root@vm_0_15_centos 8day]# ./a.out

parent pthread id: 140423590418240

child pthread id: 140423582037760

六十八. 迴圈建立多個子執行緒和注意事項

這裡寫乙個loop_pthread_create.c

#include #include #include #include #include #include #include void* myfunc(void* arg)

int main(int argc, const char* argv)

}printf("parent pthread id: %lu\n", pthread_self());

sleep(1);

return 0;

}

如果程式裡,在pthread_create那裡第4個引數,是(void*)&i,那麼將會導致問題,原因是

所以那裡需要改為傳值。

執行結果

六十九. 複習

七十. 執行緒函式列印錯誤資訊

這裡寫乙個pthread_create.c

#include #include #include #include #include #include #include //這裡是執行緒對應的標頭檔案

void* myfunc(void* arg)

int main(int argc, const char* argv)

printf("parent pthread id: %lu\n", pthread_self());

//這裡sleep是因為,父執行緒和子執行緒也會競爭cpu。

//如果父執行緒先結束,那麼則整個程式釋放,子執行緒來不及執行,就結束了

sleep(1);

return 0;

}

linux系統程式設計學習筆記

關閉檔案 linux命令列引數解析 int creat const char filename,mode t mode mode指定新建檔案的訪問許可權 return 檔案描述符fd open const char pathname,o create,mode t mode 第二個引數flags為o...

黑馬《linux系統程式設計》學習筆記(從31到35)

三十一.複習檔案描述符重定向 在下面的圖中,dup2 fd 1 1 這裡的1號檔案描述符,跟隨老的fd 1 由於這裡1號檔案描述符,已經有指向,於是原指向關係撤銷,1重新建立指向,並指向fd 1 所在。接下來,grep bash 這裡是從0號檔案描述符,即stdin fileno中讀取內容,本來st...

Linux學習過程筆記 系統程式設計

0.系統程式設計所學到的命令是應用在notepad 中的,之前那學的linux命令列是在控制終端裡除錯用的。1.製作最小linux映象太麻煩以後學習。3.用u盤除錯程式。1.在root home 新建linuxsystemcode 新建功能名資料夾。2.連好超級終端,新建.c檔案,用notepad ...