C言語,psコマンドでスレッドのSPIDを取得(確認)する

スポンサーリンク

鍛錬 367

C言語,psコマンドでスレッドのSPIDを取得(確認)する

ps コマンドを使用して、プロセス内のスレッド情報を取得し SPID の値を確認するには、ps にオプションの -T を付加します。
 
使用方法は、以下に示す通りです。

ps -T
 
スポンサーリンク

プログラム

以下は、ps コマンドで SPID を確認するために、一定時間スレッドを起動するプログラム thread_spid.c です。

// include
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <unistd.h>
#include <pthread.h>

// prototype
void *ThreadFunc(void *arg);

// main
int main(void)
{
	pthread_t thread;
	int repeat;
	int ret;
	
	repeat = 60;
	ret = pthread_create(&thread, NULL, ThreadFunc, (void *)&repeat);
	if (ret != 0) {
		printf("ERROR,pthread_create()\n");
		exit(EXIT_FAILURE);
	}
	
	ret = pthread_join(thread, NULL);
	if (ret != 0) {
		printf("ERROR,pthread_join()\n");
		exit(EXIT_FAILURE);
	}
	
	printf("main():END\n");
	
	return 0;
}

// ==========================================
// @brief      1秒間隔で引数の値だけ繰り返す
// @param[in]  arg  繰り返す回数
// @return     NULL
// @note       無し
// ==========================================
void *ThreadFunc(void *arg)
{
	int repeat = *(int *)arg;
	int i;
	
	printf("ThreadFunc():START repeat\n");
	for (i = 0; i < repeat; i++)
		sleep(1);
	printf("ThreadFunc():END repeat\n");
	
	return NULL;
}

実際に SPID を取得

以下は、プログラム thread_spid.c をバックグラウンドで実行している最中に、thread_spid.c の SPID を取得しています。

***@ubuntu:~/***/test/c$ 
***@ubuntu:~/***/test/c$ gcc -Wall -Wextra -pthread thread_spid.c -o thread_spid
***@ubuntu:~/***/test/c$ ./thread_spid &
[1] 2314
***@ubuntu:~/***/test/c$ ThreadFunc():START repeat

***@ubuntu:~/***/test/c$ ps -T -C thread_spid
   PID   SPID TTY          TIME CMD
  2314   2314 pts/0    00:00:00 thread_spid
  2314   2315 pts/0    00:00:00 thread_spid

 
上記に示した通り、スレッドの SPID を取得することができました。

スポンサーリンク

シェアする

フォローする