簡要說明fork建立父子程序、orphan孤兒程序、defunct殭屍程序;wait、waitpid使用;gdaemon建立守護程序;親緣關係的程序使用無名管道;
system、fork、execl、open均可以建立程序,這裡主要介紹fork方式。
fork建立父子程序檢視父程序、子程序的堆疊區情況。
寫時複製:copy on write 子程序對於變數的修改不影響父程序的堆疊區。因為這些共享的區域被核心設定為唯讀。
//注釋:malloc申請空間處於堆區;變數處於棧區
//區域性變數在棧區
#include"func.h"
int main()else
}//malloc申請空間在堆區
#include"func.h"
int main()else
}
return exit _exit(不重新整理緩衝區) abort(中斷方式)kill 訊號
orphan孤兒程序: 子程序尚未結束而父程序提前結束。使得子程序被init託管
defunct殭屍程序:子程序已經結束,父程序尚未結束。那麼子程序的pcb無法被清理,子程序狀態為z
//孤兒子程序
#include "func.h"
int main()else
}//殭屍子程序
#include"func.h"
int main()else
}
父程序等待某個pid的子程序的退出;wait(null)是掛起父程序等待。
#include "func.h"
int main()
else
}if(wifexited(status))
else
return
0; }
}
#include "func.h"
// 父程序寫 子程序讀
int main()
; read(fds[0],buf,sizeof(buf));
puts(buf);
exit(0);
}else
}//父程序讀 子程序寫
#include "func.h"
int main()
else;
read(fds[0],buf,sizeof(buf));
//printf("child=%d",pid);
puts(buf);
return
0; }
}
Linux gcc程式設計用法
初學時最好從命令列入手,這樣可以熟悉從編寫程式 編譯 除錯和執行的整個過程。編寫程式可以用vi或其它編輯器編寫。編譯則使用gcc命令。要往下學習首先就得熟悉gcc命令的用法。gcc命令提供了非常多的命令選項,但並不是所有都要熟悉,初學時掌握幾個常用的就可以了,到後面再慢慢學習其它選項,免得因選項太多...
多個linux gcc版本
checking for a bsd compatible install.usr bin install c checking whether ln s works.yes checking for pwd.bin pwd 所以需要把我目前的gcc版本按到以前的狀態3.4了。首先,你需要去你的us...
linux gcc原子操作
gcc從4.1.2提供了 sync 系列的built in函式,用於提供加減和邏輯運算的原子操作。其宣告如下 type sync fetch and add type ptr,type value,type sync fetch and sub type ptr,type value,type sy...