再開發應用程序或者服務器的時候,經常會用到,只啟動一個程序,以後再啟動的時候,檢查是否已經啟動,若啟動則退出。
並且,同時也有命令實現,向已有的程序發信號量,來實現reload,stop。等功能。
其實很簡單,只需要記住pid,然後對pid發送自定義的信號函數就可以,這樣就可以實現reload,stop等。
具體的例子如下:
if (argc > 1) { for (int i = 1; i < argc; i++) { if (!strcasecmp(argv[i], "stop")) { printf("signal stop\n"); int iPid = ReadPidFile(); if (iPid > 0) { kill(iPid, SIGUSR2); } exit(0); } else if (!strcasecmp(argv[i], "reload")) { printf("signal reload\n"); int iPid = ReadPidFile(); if (iPid > 0) { kill(iPid, SIGUSR1); } exit(0); } } }實現重復啟動,可以通過open文件的互斥鎖來實現,用flock函數的LOCK_EX | LOCK_NB實現。