收集系統中指定任務的所有執行緒

2021-07-28 15:22:35 字數 1367 閱讀 6201

有時候我們想對收集系統中某一些程序中的所有執行緒資訊,這個時候寫乙個簡單的指令碼來實現。

這裡針對實際的例子進行講解。

這裡寫來乙個建立來三個執行緒的程序threadtest.c 。

#include #include #include #include /* asked by va_star and va_end */

pthread_t ntid1, ntid2, ntid3;

static int child = 0;

void die(const char *fmt, ...)

void * thr_fn1(void *arg)

void * thr_fn2(void *arg)

void * thr_fn3(void *arg)

int main(int argc, char *argv)

err = pthread_create(&ntid2, null, thr_fn2, null);

if (err != 0)

err = pthread_create(&ntid3, null, thr_fn3, null);

if (err != 0)

while(1);

}

上面的**threadtest.c通過如下命令編譯成可執行檔案threadtest:

gcc -pthread -o threadtest threadtest.c
然後複製兩個此可執行檔案即最終為:threadtest, threadtest1, threadtest_2, 然後執行這個三個可執行檔案,通過ps -l檢視這些3個任務及其執行緒的情況如下所示:

圖1 三個程序及其子執行緒

執行緒的手機主要通過shell指令碼來搞定。整個流程很簡單:1 先通過程序共有的名字找到程序的pid; 2 再通過這些pid找到各自執行緒的tids,然後將它們收集到乙個檔案中。

這裡還做了一點,將有下劃線的程序給排除掉,用的是 grep -v test_ 來處理的,如下所示:

#!/bin/bash

datasets=$(ps | grep threadtest | grep -v test_ | awk '')

for i in $datasets

do tidsets=$(ps -l | grep $i | awk '')

for j in $tidsets

doecho $j >> ./tids

done

done

Python等待所有執行緒任務完成

import threading import time import random def takesleep id,name print name id 執行緒開始執行.time.sleep random.randint 0,3 print name id 執行緒任務結束 print 主程式開始...

刪除順序表中指定值的所有元素

include using namespace std define maxsize 10000 typedef struct sqlist void initlist sqlist l void input sqlist l,int n return void output sqlist l re...

找出陣列中指定元素的所有下標位置

a.不允許在方法內列印展示 b.考慮多個資料情況 c.需要在方法外獲取到下標資料資訊 d.不允許使用陣列作為返回值 e.乙個方法完成 public class homework2 int indexes newint arr.length 接受方法的返回值,得到的數查詢目標資料的個數 int cou...