c++ 循环打印当前进程pid
时间: 2023-08-04 16:10:37 浏览: 90
可以使用 `getpid()` 函数获取当前进程的 PID,并且使用一个循环来反复打印这个 PID,示例代码如下:
```c++
#include <iostream>
#include <unistd.h>
int main() {
while (true) {
std::cout << "Current PID: " << getpid() << std::endl;
sleep(1); // 暂停 1 秒钟
}
return 0;
}
```
这段代码将会无限循环打印当前进程的 PID,每隔一秒钟打印一次。你可以在终端运行这个程序并观察它的输出。
相关问题
window系统编译c++:循环打印当前进程pid
可以使用Windows API中的GetCurrentProcessId()函数来获取当前进程的PID,然后使用一个循环打印出来。以下是示例代码:
```c++
#include <iostream>
#include <windows.h>
int main() {
while (true) {
DWORD pid = GetCurrentProcessId();
std::cout << "Current process ID: " << pid << std::endl;
Sleep(1000); // 暂停1秒
}
return 0;
}
```
这段代码会不断循环打印出当前进程的PID,并且每次打印之后暂停1秒钟。你可以在命令行中编译并运行该程序。
C/C++ linux 根据父进程id获取子进程id
在C/C++中,如果你想要根据父进程ID (PID) 获取其子进程ID,可以使用Linux提供的`getppid()`函数和`waitpid()`函数,或者更高级的`psutil`库。
1. `getppid()`函数:这个系统调用返回当前进程的父进程ID。如果你想查找特定父进程的所有子进程,需要结合其他方法。
2. `waitpid()`函数:这是一系列用于等待子进程状态改变的函数。你可以用它来阻塞进程直到某个子进程结束,并得到该子进程的退出状态。通过循环调用`waitpid(-1, &status, WNOHANG)`,你可以获取到所有已结束的子进程信息,其中包含了子进程ID。
3. `psutil`库:这是一个跨平台的Python库,但它提供了C API,可以用C语言直接访问。`psutil.Process()`可以让你通过父进程ID查询到子进程列表,非常方便。
例如,下面是一个简单的示例,展示如何使用`waitpid()`获取指定父进程的所有子进程:
```c
#include <stdio.h>
#include <sys/wait.h>
int main() {
pid_t parent_pid = getpid(); // 获取当前进程ID
// 循环检查子进程,直到没有任何新的子进程为止
while (true) {
int status;
pid_t child_pid = wait(&status);
if (child_pid == -1 && errno != ECHILD) {
perror("Error waiting for a child");
break;
} else if (child_pid > 0) {
printf("Parent %d has child %d\n", parent_pid, child_pid);
}
}
return 0;
}
```
阅读全文