check all threads in a process

本文通过一个C语言示例程序介绍了如何在一个进程中创建子线程,并展示了如何使用SYS_gettid系统调用来获取主线程及子线程的线程ID(TID)。此外,还提供了编译和运行该程序的方法,以及如何使用ps和top命令来验证线程ID。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

check all threads in a process

#include <stdio.h>
#include <sys/syscall.h>
#include <assert.h>
#include <pthread.h>
#include <unistd.h>

void *nbi(void *arg)
{
        int i;
        printf("child thread lwpid: %u\n", syscall(SYS_gettid));
        printf("child thread id: %u\n", pthread_self());

        while(1)
        {
                sleep(2);
                printf("come out for fresh air!\n");
        }
}

int main()
{
        pthread_t tid;
        int rc;
        printf("main thread lwpid: %u\n", syscall(SYS_gettid));
        printf("main thread tid: %u\n", pthread_self());
        rc = pthread_create(&tid, NULL, nbi, NULL);

        assert(0 == rc);
        pthread_join(tid, NULL);

        return 0;
}

notice:
1. SYS_gettid is defined in sys/syscall.h;
2. the location of sys/syscall.h in Ubuntu PC is like /usr/include.
3. use the below build cmd to complile gettid.c:
gcc -pthread -o gettid gettid.c

the execution result:
aspirs@ubuntu1204:/work/syscall/gettid$ ./gettid 
main thread lwpid: 4960
main thread tid: 3298965248
child thread lwpid: 4961
child thread id: 3290658560
come out for fresh air!
come out for fresh air!

the result of 'ps -T -p 4960' during process 'gettid' running:
aspirs@ubuntu1204:/usr/include$ ps -T -p 4960
  PID  SPID TTY          TIME CMD
 4960  4960 pts/3    00:00:00 gettid
 4960  4961 pts/3    00:00:00 gettid
according to gettid's log, we can know 4960 and 4961 on SPID column are the TIDs of main thread of gettid and the another thread in gettid.

the result of 'top -H -p 4960' during process gettid running:















design a plugin for files of screen-recording's moving to different disks of Xbox in PC. reply in Chinese.the detailed of process, and necessary profiles and their codes(C series codes is required).(rules:1.detect and find the enough and largest space between the disks and list priority sequence but the disk where the running game in(default mode) , customizing mode is alternative;2. for the recording files, if choose default mode, set a default value such as 1GB for recordings and 10MB for screenshots, they all depends on the resolution of the screen(could find the minimum size of files of different resolutions to fill the default mode),it could customize the minimun size;3.for customize mode, it should detect 2 first and then is 1 to check whether the disks are allowed to move, if not, show popup window to tell the info and cancel(but don't pop the window when running a games), if enough, run the moving as what mode you've chosen, so do as default mode;4.for different games-recording, they could also be classified when moved to different disks or even the same disks but different files;5.for different games-recording, the files' sizes are smaller the customized values but not only one file, cumulating all of them first then run the rule 2 before the disks is full(default mode different before),and number of files could be customized despite of the size of these files aren't enough to move, and it could give the alternations like according to games(give a priority sequence based the number of repeated names of games-recording), size(from larger to smaller, they all need to smaller than size mentioned in rule 2), number(could customize it) (this is customized mode different before);6.screenshot are alternative in the rule, but when it run the rule 4, it need to be classified to different files where the same games-recording files in;7.when there is a game is running, pause the moving, especially the disk where the running games in;8.to avoid the difficulty of management with the scattered files, no need to run the rule 1 when every time(but not first time you reboot the computer after you install the plugin) computer booting or game recording until the overflow of disk no matter what mode you've chosen and then pop up to rechoose the mode;9.if a disk is overflow when moving a file of game-recording, cancel to move it to the new chosen disk, add number in the files' name;10.to avoid to frequent moving of files, it could set a threshold of system disk, pop up the tip when the threshold is about to arrive before recording, threshold setting: it could choose proportion(%) or values(the customized space threshold of system disk) ;11.choose the unused cores of CPU as priority.
06-30
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值