本文件適用於希望了解sylixos下kill 15訊號的工程師。
構建乙個簡單的測試用例,主線程與子執行緒均執行20秒後結束,程式**如程式清單 2.1所示:
程式清單 2.1 構建測試用例
void *fun(void *arg)
pthread_exit(null);
return (null); }
int main (int argc, char *argv)
pthread_join(tid, null);
return (0); }
將測試用例編譯執行在sylixos系統和linux系統下,通過傳送kill –n 15 (pid)命令,觀察sylixos與linux系統下的現象。
linux下向程序傳送kill 15訊號後,現象如圖 2.2 所示:
圖 2.2 linux下kill 15現象
sylixos下向程序傳送kill 15訊號,現象如圖 2.3 所示:
圖 2.3 sylixos下kill 15現象
可以發現linux下程序收到kill 15訊號後,主線程和子執行緒均退出,程序結束;sylixos下收到kill 15訊號後,主線程結束,子執行緒正常執行,直到子執行緒執行結束,程序結束。
分析核心原始碼可以發現,當收到訊號為sigterm,即kill 15訊號時,系統不會將其設定為強制退出模式,所以主線程會結束並等待子執行緒退出。程式**如程式清單 3.1 所示:
程式清單 3.1 設定退出模式
#define sigterm 15 /* 程序中止 */
#define lw_vproc_exit_normal 0 /* 正常 (等待所有子執行緒退出) */
#define lw_vproc_exit_force 1 /* 強制退出 (殺死所有子執行緒) */
if ((pid > 0) && (isigno != sigterm))
結合核心原始碼,如果希得到與linux相同的現象,可以在測試用例中新增使用對應的巨集,但這種使用方式並不安全。修改方式如程式清單 3.2 所示:
程式清單 3.2 測試用例新增**
#include
vprocexitmodeset(getpid(), lw_vproc_exit_force);
修改完成後,測試用例在sylixos下編譯執行後,傳送kill 15訊號現象如圖 3.3 所示:
圖 3.3 修改後sylixos下kill 15現象
可以發現子執行緒與主線程均退出。
《realevo-ide使用手冊》
《sylixos應用開發手冊》
SylixOS 下的IO系統呼叫
sylixos標準i o基本介紹 簡介i o 系統又稱作輸入輸出系統,sylixos 相容posix標準輸入輸出系統,sylixos的i o概念繼承了unix作業系統的i o概念,認為一切皆為檔案。與unix作業系統相同,sylixos中的檔案也分為不同的型別。兩種i o型別 i o系統分為 ori...
Linux下Kill函式用法
kill 功能描述 用於向任何程序組或程序傳送訊號。標頭檔案用法 1 include sys types.h 23 include signal.h 45 intkill pid t pid,intsig 引數 pid 可能選擇有以下四種 1.pid大於零時,pid是訊號欲送往的程序的標識。2.pi...
Linux下Kill函式用法
kill 功能描述 用於向任何程序組或程序傳送訊號。1 include sys types.h 23 include signal.h 45 intkill pid t pid,intsig 67 引數 pid 可能選擇有以下四種 1.pid大於零時,pid是訊號欲送往的程序的標識。2.pid等於零...