原创 Linux中的僵死進程(03)---信號回收僵死進程

環境:Vmware Workstation;CentOS-6.4-x86_64 說明: 通過給進程發送信號,也可以回收已經消亡的子進程:signal(SIGCHLD, SIG_IGN); 程序如下: #include <stdio.h

原创 Linux系統函數execve說明(03)---execve函數本質分析

環境:Vmware Workstation;CentOS-6.4-x86_64 說明: 1、execve函數執行的本質是:在程序1中執行execve函數調用程序2,那麼程序2就會完全霸佔程序1的內存空間,從而實現一個程序調用另一個程序。

原创 C和C++通用的頭文件編寫形式

環境:Vmware Workstation;CentOS-6.4-x86_64 說明: 通過c++編譯器預定義的一個宏“__cplusplus”,實現C和C++通用的頭文件。 頭文件樣式如下: #ifndef __MYHEADER_H

原创 makefile---生成共享庫文件so

環境:Vmware Workstation;CentOS-6.4-x86_64 說明: 1、共享庫so文件名必須以lib開頭,擴展名必須是.so(硬性規定):lib***.so 2、編譯的時候,gcc必須加-fPIC選項,目的是使gcc

原创 僵死進程和孤兒進程

環境:Vmware Workstation;CentOS-6.4-x86_64 程序要求: 編寫一個孤兒進程,這個孤兒進程可以創建100個僵死進程。 分析: 1、首先在一個進程中fork,創建兩個完全一樣的進程。 2、退出父進程,使

原创 Linux系統函數execve說明(01)---函數參數說明

環境:Vmware Workstation;CentOS-6.4-x86_64 說明: 1、execve是Linux的系統函數,查詢的時候使用man 2 execve 2、execve在頭文件unistd.h中。 3、execve的定義

原创 Linux中fork的使用(02)---fork的返回值

環境:Vmware Workstation;CentOS-6.4-x86_64 fork的返回值: 1、fork執行的時候,會有兩個返回值,一個是父進程的返回值,一個是子進程的返回值。 2、在父進程中fork的返回值是子進程的PID。

原创 Linux系統函數execve說明(02)---實現兩個程序之間的調用

環境:Vmware Workstation;CentOS-6.4-x86_64 說明: 自定義兩個程序,實現程序之間的調用。 要求: 1、定義兩個源文件main.c和other.c,生成兩個可執行文件main和other 2、在oth

原创 Linux中的僵死進程(01)---僵死進程的概念

環境:Vmware Workstation;CentOS-6.4-x86_64 說明: 1、僵死進程:子進程死亡,父進程存在。 2、子進程不會被回收,回收的時機是父進程退出;也就是說,僵死進程的子進程,只有父進程退出的時候纔會被回收。

原创 Linux中的僵死進程(02)---wait回收僵死進程

環境:Vmware Workstation;CentOS-6.4-x86_64 這個可以參照前面的博客《Linux中fork的使用(04)---wait模型》 需要說明的是: 僵死進程一定是子進程消亡,父進程仍然存在的情況。

原创 Linux下設置程序可以在當前目錄下執行

環境:Vmware Workstation;CentOS-6.4-x86_64 說明: 1、設置前:執行程序的時候要使用命令“./程序名”來執行 2、設置後:執行程序的時候使用命令“程序名”來執行 設置步驟: 1、進入到宿主目錄cd:

原创 Linux中的sleep函數

環境:Vmware Workstation;CentOS-6.4-x86_64 說明: 1、Linux系統下可以使用sleep函數。 2、sleep函數在頭文件#include <unistd.h>中。 3、sleep函數的定義:uns

原创 Linux中fork的使用(04)---wait模型

環境:Vmware Workstation;CentOS-6.4-x86_64 wait說明: 1、進程一旦調用了wait,就立即阻塞自己。 2、wait會收集殭屍進程的信息,並把殭屍進程銷燬後返回。 3、wait函數的定義形式:pid

原创 Linux中fork的使用(03)---使用if...else...區分父子進程特有的內容

環境:Vmware Workstation;CentOS-6.4-x86_64 說明: 1、根據父子進程中,fork返回值的結果不同,那麼可以明確區分執行代碼屬於父進程還是子進程。 2、if的判斷條件是fork的返回值是否大於0。 3、

原创 通過execve實現不同進程間文件描述符的共享

環境:Vmware Workstation;CentOS-6.4-x86_64 程序的實現原理: 在myexecve中得到文件的描述符,通過execve函數,傳遞文件的描述符到程序other中,隨後通過程序other替換程序myexec