| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- /************************************************************************
- * AUTHOR: NiuJiuRu
- * FILENAME: swprogress.c
- * CONTENT: 进程
- * NOTE:
- * HISTORY:
- * 1, [2010-12-21] created by NiuJiuRu
- ***********************************************************************/
- #include "swapi.h"
- #include "swstring.h"
- #include "swdir.h"
- #include "swprogress.h"
- /* 得到当前进程的PID */
- int xGetCurrentProcessId()
- {
- return getpid();
- }
- /* 得到当前进程所对应的命令文件名 */
- char *sw_progress_getCMD(char *cmd)
- {
- if(!cmd) return NULL;
- xGetSelfRunningInfo(NULL, cmd);
- return cmd;
- }
- /* 根据进程ID杀死进程 */
- void sw_progress_killByPID(int pid)
- {
- kill(pid, SIGKILL);
- }
- /* 根据命令文件名杀死进程 */
- void sw_progress_killByCMD(const char *cmd, int ignorePID)
- {
- FILE *fp = NULL;
- char buf[MAX_LINE_CHARS] = { 0 };
- int pid = 0;
- // 创建进程快照
- fp = popen("ps -e", "r");
- if(!fp) return;
-
- // 遍历所有进程
- while(fgets(buf, sizeof(buf), fp) != NULL)
- {
- sscanf(buf, "%d", &pid); // 得到进程PID
- if(xstrcasestr(buf, "right", cmd) != NULL && pid != ignorePID)
- sw_progress_killByPID(pid);
- memset(buf, 0, sizeof(buf));
- }
-
- // 关闭快照句柄
- pclose(fp);
- }
|