2、fork和vfork之間的區別
vfork用於創建一個新進程,而該新進程的目的是exec一個新程序;
vfork和fork一樣都創建一個子進程,當時它不將父進程的地址空間完全複製到子進程中,因爲子進程會立即調用exec(或exit),於是也就不會訪問該地址空間。 相反,在子進程exec或exit前,它在父進程的空間中運行。
3、exec
當進程調用一種exec的時,該進程的執行完全替換爲新程序,而新程序則從其main函數開始執行,因爲調用exec並不創建新進程,所以前後的秦城ID並沒有改變。 exec只是用一個全新的程序替換了當前進程的正文、數據、堆和棧。
4、atexit函數
#include <stdlib.h>
int atexit( void (*func)(void) );
登記的進程將有exit自動調用,調用順序FILO.
5、setjump 和 longjmp函數
非局部goto,這不是由普通C語言goto語句在一個函數體內實施的跳轉,而是在棧上跳過若干調用幀,返回到當前函數調用路徑上的某一個函數中。
#include <setjmp.h>
int setjmp(jmp_buf env);
int longjmp(jmp_buf env, int val);
6、字符串宏創建符 #
#define doit(name) pr_limit( #name, name);