Quellcode durchsuchen

sphost完全关闭

80374463 vor 6 Jahren
Ursprung
Commit
662f854b9a
3 geänderte Dateien mit 15 neuen und 11 gelöschten Zeilen
  1. 1 1
      libtoolkit/spinlock.c
  2. 4 0
      spbase/sp_dbg.cpp
  3. 10 10
      sphost/sphost.c

+ 1 - 1
libtoolkit/spinlock.c

@@ -123,7 +123,7 @@ TOOLKIT_API void fastlock_enter( lock_t l )
 #if _MSC_VER < 1400
 			__asm { rep nop }
 #else
-			YieldProcessor();
+			YieldProcessor();		//关闭sphost时,调试在这里停止,且无法通过taskkill关闭sphost
 #endif
 		}
 		backoffs++;

+ 4 - 0
spbase/sp_dbg.cpp

@@ -62,6 +62,10 @@ int spDbg::sp_dbg_term()
 void spDbg::sp_dbg_log(int level, const char *str, va_list arg)
 {
 	xlog_log_v(m_inst, level, str, arg);	//输出日志
+	if (level > XLOG_LEVEL_FATAL)
+	{
+		return;
+	}
 	
 	// 只显示警告以上级别信息
 	if (level >= XLOG_LEVEL_WARN && level <= XLOG_LEVEL_FATAL)

+ 10 - 10
sphost/sphost.c

@@ -70,16 +70,16 @@ static void SetEnvPath(const char *mod_name)
 
 DWORD sphostMonitor(LPVOID param)
 {
-	HANDLE spShellProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, GetProcessIdFromName(PROCESS_SPSHELL));	//获取的是准确的spshell.exe的pid
-	int waitTimes = 1;
-	if (NULL == spShellProcess)
-	{
-		CloseHandle(spShellProcess);
-		ExitProcess(-1);	//can not find spShell
-	}
+// 	HANDLE spShellProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, GetProcessIdFromName(PROCESS_SPSHELL));	//获取的是准确的spshell.exe的pid
+// 	int waitTimes = 1;
+// 	if (NULL == spShellProcess)
+// 	{
+// 		CloseHandle(spShellProcess);
+// 		ExitProcess(-1);	//can not find spShell
+// 	}
 		
-	
-	while (WAIT_OBJECT_0 != WaitForSingleObject(spShellProcess, 1000))	//spshell exit
+	int waitTimes = 1;
+	while (0 != GetProcessIdFromName(PROCESS_SPSHELL))	//spshell exit
 	{
 		
 		if (waitTimes % DEFAULT_MEMORY_CLEAN_TIME == 0)
@@ -94,9 +94,9 @@ DWORD sphostMonitor(LPVOID param)
 			Dbg("进程%d, 释放内存, 当前占用为:\t%dK", GetCurrentProcessId(), memoryInfo / 1000);
 		}
 		waitTimes++;
+		Sleep(1000);
 	}
 
-	CloseHandle(spShellProcess);
 	ExitProcess(0);
 
 	return 0;