歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux技術

linux的防止重復啟動和reload的信號量的使用

再開發應用程序或者服務器的時候,經常會用到,只啟動一個程序,以後再啟動的時候,檢查是否已經啟動,若啟動則退出。

並且,同時也有命令實現,向已有的程序發信號量,來實現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實現。

Copyright © Linux教程網 All Rights Reserved