函式void os_daemonize(void) 將當前程序變成後台程序即放棄終端。一開始不理解為什麼要兩次fork,後來查網上資料得知,兩次fork是為了防止第乙個子程序開啟終端。首次fork使父程序退出,子程序繼承了父程序的程序組id,但具有乙個新的程序id,這就保證了子程序不是乙個程序組的首程序。呼叫s e t s i d以建立乙個新對話期,並使子程序成為了首程序。再次使用fork,使父程序(第一次fork的子程序)終止,第二個子程序作為精靈程序繼續執行。這樣就保證了該精靈程序不是對話期首程序,防止了它取得終端控制。
void os_daemonize(void)
else
exit(0);
} else if (pid < 0)
exit(1);
close(fds[0]);
qemu_set_cloexec(fds[1]);
setsid();
pid = fork();
if (pid > 0)
exit(0);
else if (pid < 0)
exit(1);
umask(027);
signal(sigtstp, sig_ign);
signal(sigttou, sig_ign);
signal(sigttin, sig_ign);
}}
**:
為QEMU新增新的QMP命令
qmp命令由結構 mon cmd t 定義,該結構在 monitor.c 的開頭被定義。注意檢視它的成員以及該結構上面的注釋。為了新增新的 qmp命令,需要修改 qemu monitor.hx 注意檢視最開始的說明 defheading 用於在help text 和texi 中增加標題頭 處於ste...
qemu中的Hbitmap資料結構
儘管unsigned long已經能夠勝任bitmap的實現,但是這樣實現的bitmap,當bitmap比較大的時候,它的操作效率很低。典型的,像為blockdriver維持bitmap,磁碟檔案的每個塊都對應乙個bit位,那麼這張bitmap表是很大的。如果在熱遷移過程中,需要將映象檔案熱遷移到目...
在Ubuntu 10 04中配置qemu虛擬網路
1 device drivers network device support universal tun tap device driver support 2 networking support networking options 802.1d ethernet bridgingapt ge...