作者cerebellum.bbs@cpu.tfcis.org (ymca) 看板: itoc
標題Re: [問題] QKMJ 功能的潛藏危機
時間動力核心 (2007/09/26 Wed 18:01:25)
各位前輩 我想要實作該功能時 發現無法達到想要的功能
以下說明我修改的部份 以及執行後的結果
我的機器是ubuntu7.04
※ 引述《BioStar.bbs@micro.bio.ncue.edu.tw (澎湖小雲雀)》之銘言:
> /* 改用比對 pid 方式檢查 */
> #include <stdio.h>
> int
> main()
> {
> int line;
> FILE *fp;
> char a[20], b[20], c[20], d[20], e[20], f[20];
> char g[20], h[20], i[20], j[20], k[20];
> char cmd[128], *str;
> char tmpfile[32];
> int process_a[16], process_b[16], ii, jj;
> strcpy(tmpfile, "/tmp/killtop1");
> /* 只取出非 idle 中的 qkmj */
> sprintf(cmd, "top -I | grep qkmj > %s", tmpfile);
^^^^^^^^^^^^^^^^^^^^^^^
這個部份在我實際使用指令時 發現應該要改成下面這一行
top -i -b -n 1 | grep qkmj > %s", tmpfile
如此可以產生一個檔案 裡面有以下顯示
5642 qkmj 25 0 2444 916 700 R 57.6 0.1 0:26.79 qkmj
5647 qkmj 25 0 2448 920 700 R 37.7 0.1 0:23.51 qkmj
可以發現有兩個qkmj執行序幾乎把我的cpu資源吃光光了......
如果我的檔案格式如以上所示 那下面的程式碼有需要做怎樣的修改
才能達到砍除全部已經死掉的qkmj?
因為我執行的結果 執行一次只能砍掉一個死掉的qkmj
必須要執行多次才能全部清除 感謝幫忙
> /* 製作第一份執行中 qkmj 程序名單 */
> system(cmd);
> if (!(fp = fopen(tmpfile, "r")))
> return -1;
> for (line = 0; line <= 14; line++)
> if (fscanf(fp, "%s %s %s %s %s %s %s %s %s %s %s",
> a, b, c, d, e, f, g, h, i, j, k) == 11)
> process_a[line] = atoi(a);
> else
> process_a[line] = 0;
> fclose(fp);
> unlink(tmpfile);
> sleep(5); /* 小睡五秒 */
> /* 製作第二份執行中 qkmj 程序名單 */
> system(cmd);
> if (!(fp = fopen(tmpfile, "r")))
> return -1;
> for (line = 0; line <= 14; line++)
> if (fscanf(fp, "%s %s %s %s %s %s %s %s %s %s %s",
> a, b, c, d, e, f, g, h, i, j, k) == 11)
> process_b[line] = atoi(a);
> else
> process_b[line] = 0;
> fclose(fp);
> unlink(tmpfile);
> /* 比對兩份 qkmj 程序名單 */
> for (ii = 0; ii <= 14; ii++)
> {
> if (!process_a[ii])
> break;
> for (jj = 0; jj <= 14; jj++)
> {
> if (!process_b[jj])
> break;
> if (process_a[ii] == process_b[jj]) /* 如果發現有相同 */
> {
> sprintf(cmd, "kill -9 %d", process_a[ii]);
> system(cmd); /* 代表這極有可能是死程序,必須 kill 掉 */
> }
> }
> }
> return 0;
> }
--
=[﹎:�摃�◣��:﹎Origin ]|[ ���O���� cpu.tfcis.org ]|[�搟說�﹎:]=
=[﹊:�摃�╱��:﹊Author ]|[ 140.116.64.220 ]|[���插�﹊:]=
= ▊▌▎▎Modify ▎▌▋▊▊≡: Wed, 26 Sep 2007 18:04:49 CST :≡:]=
= ▊▌▎▎Modify ▎▌▋▊▊≡: Wed, 26 Sep 2007 18:06:38 CST :≡:]=