c++中打印进程号和线程号

//pid 打印
#include <sys/types.h>
#include <unistd.h>

std::cout << "pid= " << getpid() << std::endl;


//tid打印
#include <thread>
std::cout << "tid=" << std::this_thread::get_id() << std::endl;

 

要获取当前所有线程的信息,你可以使用C++标准库的`<thread>`头文件的函数,结合操作系统提供的相关API来实现。以下是一个基本的示例代码: ```cpp #include <iostream> #include <thread> #include <vector> #include <Windows.h> // 适用于Windows操作系统的API头文件 // 线程信息结构体 struct ThreadInfo { DWORD threadId; // 线程ID HANDLE threadHandle; // 线程句柄 }; // 获取当前所有线程信息的函数 std::vector<ThreadInfo> GetAllThreadsInfo() { std::vector<ThreadInfo> threads; // 获取系统所有线程的快照 HANDLE threadSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0); if (threadSnapshot == INVALID_HANDLE_VALUE) { std::cerr << "Failed to create thread snapshot." << std::endl; return threads; } // 遍历快照的所有线程 THREADENTRY32 threadEntry; threadEntry.dwSize = sizeof(threadEntry); if (Thread32First(threadSnapshot, &threadEntry)) { do { if (threadEntry.th32OwnerProcessID == GetCurrentProcessId()) { // 只获取当前进程线程 HANDLE threadHandle = OpenThread(THREAD_ALL_ACCESS, FALSE, threadEntry.th32ThreadID); if (threadHandle != NULL) { ThreadInfo threadInfo; threadInfo.threadId = threadEntry.th32ThreadID; threadInfo.threadHandle = threadHandle; threads.push_back(threadInfo); } } } while (Thread32Next(threadSnapshot, &threadEntry)); } // 关闭快照句柄 CloseHandle(threadSnapshot); return threads; } int main() { // 获取当前所有线程信息 std::vector<ThreadInfo> threads = GetAllThreadsInfo(); // 打印线程信息 for (const ThreadInfo& thread : threads) { std::cout << "Thread ID: " << thread.threadId << std::endl; // 可以通过调用GetThreadTimes等API获取更多线程信息 // ... // 关闭线程句柄 CloseHandle(thread.threadHandle); } return 0; } ``` 这个示例代码使用了Windows操作系统的API来获取线程信息,如果你使用的是其他操作系统,你可能需要使用不同的API来实现相同的功能。请注意,这只是一个基本示例,你可以根据自己的需求进行扩展和修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值