程序和執行緒

2022-09-11 03:39:12 字數 1537 閱讀 1016

1.  getenv()獲取環境變數

2.  gedit 1.c 手工置於前台   fg 後台->前台

3.  getcwd :獲取當前目錄  printenv:列印環境變數

4.  getpwuid(getuid())->pw_name

5.  cd:shell內鍵命令,不犧牲子程序。

6、  exit 和 wait 配合使用

1)void exit(int status); status 返回給父程序,可以被wait接受。並且會強制緩衝儲存。status等於0時表示正常。

2)pid_t wait(int status);

3)pid_t waitpid(pid_t pid, int * status, int options)  此函式和pid_t fork(void) 都可以接受子程序。

7.  日誌檔案所在:/var/log/syslog

8.  執行緒編譯時要加 -lpthread

9.  pthread_self()執行緒號

10.  memset, bzero 可以將記憶體清零。

11.  條件變數(執行緒間通訊,解決空轉,訊號量由條件變數封裝而成)

1)pthread_cond_wait()  睡了解鎖,醒來加鎖。

2)pthread_cond_broadcast()喚醒所有

3)pthread_cond_signal 喚醒第乙個

12  守護程序建立步驟

1)建立子程序,父程序退出。

pid = fork();

if(pid < 0)

perror("fork error");

eixt(1);

else if(pid > 0)

exit(0);

2)在子程序中建立新會話。(前兩步驟必須有)

setpid();(返回程序組id)

3)改變當前目錄

chdir("/tmp");

4)重新設定檔案許可權掩碼

umask(0);

5)關閉檔案描述符

for(i = 0; i < getdtablesize(); i++)  close(i);

13  map 對映4函式(可重入問題)pthread_once  pthread_key_create  pthread_setspecific  pthread_getspecific

14  執行緒池中,佇列是帶緩衝的臨界資源。

15  kill 2 = crtl c  kill -17 (用wait 收屍,接收子程序訊號)  kill -18 continue  kill -19 stop  (kill -9 和kill -19 不能被忽略。)

16  eexist(17) file exists

17  sprintf 字串拼湊。

18  無名管道中: fd[0]是負責讀, fd[1]是負責寫。

19  close其實是把檔案使用記數減去一。

20  ipcs指令用於檢視system v 家族的程序間通訊   -m只是檢視共享記憶體。

21  p->消費者 post  v->生產者 wait

執行緒和程序

標準的定義是 程序是執行緒的容器,乙個程序可於乙個或者多個執行緒,它是系統分配資源的基本單位 同乙個程序下,執行緒共享位址空降 已經開啟的檔案 訊號處理函式 報警訊號和其他,執行緒自己只保留程式計數器和棧。但是很遺憾的,這個只是教科書上的定義,實際情況是每個作業系統實現的作業系統特性不同,實現的方法...

程序和執行緒

乙個程序就是當前正在執行的乙個程式,包括程式的暫存器 程式計數器和變數的當前值。不同的程序擁有不同的位址空間。而執行緒可以理解為是程序中的控制流。同乙個程序內也就是說在同乙個位址空間內可以有多個控制流。也就是可以有多個線 程,他們共享位址空間。我們通常將程序視為是資源的集合,程序中有程式的正文 資料...

執行緒和程序

對於求職者,在面試的時候大多都會被問到 你對多執行緒了解麼?給我講講執行緒和程序的區別吧。在unix中,乙個程序可以理解為執行緒 位址空間 檔案描述符 資料,道破現實,其實就相當於老闆和員工,老闆就是程序,員工就是執行緒。老闆需要僱傭若干員工 執行緒 還要有辦公樓 位址空間 還要有若干的辦公裝置 檔...