原创 21.有名管道fifo

1.特點  有名管道  在磁盤上有這樣一個文件,可通過命令ls -l查看前綴帶p的文件  僞文件,在磁盤上大小永遠爲0  在內核中有一個對應的緩衝區 

原创 8.進程相關的命令ps和kill

ps:  ps aux | grep "xxx"   a:所有信息     u:用戶相關信息     x:顯示不依賴終端的進程   "xxx":與進程相關的關鍵詞,寫時不需要雙引號""  ps ajx | grep "xxx"    j:

原创 20.設置匿名管道爲非阻塞

1.默認讀寫兩端均爲阻塞2.需要設置哪端爲非阻塞,就設置哪端,例如設置讀端爲非阻塞:  利用變參函數:fcntl    通過修改文件屬性的方式,即類似open的時候對應的flag屬性  先獲取原來的flags:    int flags

原创 17.父子進程使用匿名管道通信的相關問題

1.單個進程能否使用匿名管道完成讀寫操作?答案:可以,但沒有意義。2.父子進程通信是否需要sleep函數?當以下情況發生時:      父進程寫--寫的慢  子進程讀--讀得快子進程需不需要sleep等待父進程寫完?答案:不需要,因爲讀操

原创 14.進程間通信(IPC)相關概念

1.什麼是IPC?進程間通信:InterProcess Communication,進程與進程間進行信息的交互。2.進程間通信常用的4種方式(介質)管道--簡單信號--系統開銷小共享映射區--有無血緣關係的進程間通信都可以本地套接字--穩

原创 23.mmap的注意事項

1.如果對mmap的返回值(ptr)做++操作(ptr++),munmap是否能夠成功?  不能  要想執行++操作,可以char* pt = ptr;2.如果open時O_RDONLY,mmap時prot參數指定PROT_READ |

原创 22.內存映射區mmap

1.mmap--創建內存映射作用:將磁盤文件的數據映射到進程虛擬地址空間中的動態庫加載區中,可以看成一塊虛擬內存,用戶通過修改內存就能修改磁盤文件函數原型:void* mmap(void* addr,         // 映射區首地址,

原创 16.pipe函數創建匿名管道

  int pipe(int fd[2]);   fd--傳出參數   fd[0]--讀端   fd[1]--寫端用法:  int fd[2];  pipe(fd); 點贊 收藏 分享 文章舉報

原创 10.exec函數族功能介紹

1.讓父子進程執行不相干的操作2.能夠替換進程虛擬地址空間中的源代碼.text段3.當前程序中調用另外一個應用程序,而不再執行原有的程序  首先想到exec之前需要fork4.實現換核不換殼的功能5.執行一個另外的程序不需要創建額外的虛擬

原创 13.wait函數和waitpid函數

點贊 收藏 分享 文章舉報 Disappear_XueChao 發佈了119 篇原創文章 · 獲贊 12 · 訪問量 2萬+ 私信

原创 12.孤兒進程和殭屍進程

1.孤兒進程:爹生孩子爹先死,孩子還活着,孩子叫孤兒進程孤兒進程會被init進程領養,init進程變爲孤兒進程的父親爲了釋放子進程佔用的資源:  進程結束之後,子進程能夠自行釋放虛擬地址空間中的用戶區空間  但是釋放不了pcb,必須由父進

原创 11.exec函數族函數的使用

這裏,就列舉兩個常用的函數:1.執行指定目錄下的程序  int execl(const char* path,const char* arg,...);  path:要執行的程序的絕對路徑  變參arg:要執行的程序的需要的參數  第一a

原创 18.匿名管道的讀寫行爲

1.讀操作(1) 有數據  read返回讀出的字節數(2) 無數據  寫端全部關閉:    read解除阻塞,返回0,相當於讀文件讀到了尾部  寫端沒有全部關閉:    read阻塞2.寫操作(1) 讀端全部關閉  管道破裂,進程被終止,

原创 9.父子進程間的數據共享問題

進程剛執行fork之後,兩個虛擬地址空間的用戶區數據完全相同,如下圖所示:  如上圖所示,父子進程中都用一個變量(全局變量.data段)int num = 100,當兩個進程僅對該變量執行讀操作時,它們讀取的是物理內存中的同一區域。而當父

原创 24.mmap進程間通信

1.有血緣關係的  創建匿名和非匿名的映射區都可以  父子進程共享內存映射區2.沒有血緣關係的  不能使用匿名映射的方式  只能藉助磁盤文件創建映射區  不阻塞 點贊 收藏 分享 文章舉報