postgresql啟動流程之訊號初始化

2021-08-21 11:31:18 字數 933 閱讀 3794

void

pqinitmask(void)

{ //將訊號集unblocksig初始化為空

sigemptyset(&unblocksig);

//將訊號集blocksig、startupblocksig初始化包含所有

sigfillset(&blocksig);

sigfillset(&startupblocksig);

/*從訊號集中刪除訊號:

sigtrap:跟蹤陷阱(trace trap),啟動程序,跟蹤**的執行

sigabrt:呼叫abort函式生成的訊號,signal 6

sigill:執行了非法指令. 通常是因為可執行檔案本身出現錯誤, 或者試圖執行資料段. 堆疊溢位時也有可能產生這個訊號

sigbus:非法位址, 包括記憶體位址對齊(alignment)出錯。比如訪問乙個四個字長的整數, 但其位址不是4的倍數。它與sigsegv的區別在於後者是由於對合法儲存位址的非法訪問觸發的(如訪問不屬於自己儲存空間或唯讀儲存空間)。

sigsys:非法的系統呼叫

sigcont:讓乙個停止(stopped)的程序繼續執行. 本訊號不能被阻塞. 可以用乙個handler來讓程式在由stopped狀態變為繼續執行時完成特定的工作. 例如, 重新顯示提示符...

sigquit:和sigint類似, 但由quit字元(通常是ctrl-\)來控制. 程序在因收到sigquit退出時會產生core檔案, 在這個意義上類似於乙個程式錯誤訊號。

sigterm:程式結束(terminate)訊號, 與sigkill不同的是該訊號可以被阻塞和處理。通常用來要求程式自己正常退出,shell命令kill預設產生這個訊號。如果程序終止不了,我們才會嘗試sigkill。

sigalrm:鬧鐘。當某程序希望在某時間後接收訊號時發此訊號

*/#ifdef sigt

U BOOT啟動流程之三

u boot 啟動 的第二階段 在 u boot 啟動的 第二階段 主要初始化一些與硬體相關的資訊 比如串列埠 lcd,flash,timer等。這些硬體是根據自己的需要來初始化的 過程如下 從這個圖中,可以看出第二階段的執行流程,裡面的函式也比較多。在lib arm board.c 1 board...

PostgreSQL 啟動設定

安裝好的 postgresql 設定為自動啟動 進入 postgresql 原始碼解壓出來的目錄,啟動指令碼拷貝到 etc init.d 目錄下,重新命名為 postgresql 8.3.7,cp contrib start scripts linux etc init.d postgresql 8...

STM32啟動詳細流程之啟動檔案

3.stm32啟動流程 4.最小啟動配置 加個雞腿 可執行程式 cpu執行第一條使用者 這個流程中著重講述的是hex檔案如何被燒寫到stm32內部的指定位址處。燒寫到stm32中的可執行檔案不僅只有hex格式,還有axf bin。針對不同格式的可執行檔案,用不同的工具進行燒寫 cpu執行第一條使用者...