多進程銀行菜單總結

多用戶(多進程)銀行系統總結:

主要技術:共享內存;信號量;proc;數據庫;守護進程;信號;動態鏈接庫
 
共享內存:共享內存中放置了一個結構體數組和一個信號量標誌位,此信號量標誌位只允許 一個getshm()函數去獲得結構體數組中 的結構體.結構體數組中的每個結構體又包含結構體信息和一個信號量標誌位,此信號量標誌位,爲了查看這個結構體有沒有沒佔用
信號量:  信號量也是一塊小的內存空間
守護進程:一個進程,fork() 出一個子進程後,父進程退出,然後執行execut();此時第一子進程退出了當前進程組,重新開闢了一 個進程組,併成爲了組長,然後第一子進程再fork()出第二子進程(孫進程);然後第一子進程退出,此時第二子進程就獨立存在於這個進程組中而且沒有了終端,這個第二子進程便是守護進程 
守護進程它的子進程也沒有控制終端,只在後臺執行
信號:簡單的發送信號用 kill(),signal(),較複雜的信號發送用 sigqueue();sigaction(),一般都是匹配使用,具體參數查看man手  冊
     
錯誤1: 從數據庫中讀出的數據,末尾沒有'/0',當有程序在外部 printf時,
        打印完一條數據庫中的數據時,printf不會停止,而是繼續打印數據
        庫中的一條數據後面的數據.
 當要從數據庫中讀數據時,要在給數據庫定義數據時,先把數據所有位先
        置爲 '/0'.

錯誤2:  當用 strcmp函數時 ,
 如char name[10],char name[11];定義的 兩個 數組位數不相同 ,
        會導致 這兩個字符串不匹配.

錯誤3:  當要從數據庫中讀數據時,先要查看數據庫實例開啓了沒有,如果沒有開
        啓,要先進入數據庫用戶 startup 開啓數據庫

一些相關命令: ps -ef| grep ... 查詢當前運行的進程
              ipcs -m  查詢進程通信機構ipc機構
              ipcrm -m spid  刪除相關的進程通信的機構

注意:  1:server服務器一般只能啓動一次,如果已經啓動,注意不要重複開啓
       2: kill -9  id 可刪除刪除服務器進程和客戶端進程
       3:進程間通信機構 如共享內存等,一般也只啓動一次,如果重複開啓,可能
         會導致數據混亂
       4:連續執行了幾個scanf之後,要調用一下getchar()函數;
       5:當 客戶端 接受完信號之後 ,用pause()函數掛起,等待服務器執行完後臺操作之後,接收來自服務器的信號,然後繼續往下執行         6:scanf()函數中,參數是一個地址,如果是 一個數組,則可以直接用數組名(即此數組的首地址);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章