C++代码不读proc获取其他pid
时间: 2023-12-03 08:47:48 浏览: 75
如果您想要获取其他进程的 PID,可以使用以下方法:
1. 使用 `ps` 命令获取进程列表,然后从输出中提取 PID。
```c++
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *fp;
char path[1035];
fp = popen("ps -A | grep <process_name> | awk '{print $1}'", "r");
if (fp == NULL) {
printf("Failed to run command\n" );
exit(1);
}
while (fgets(path, sizeof(path)-1, fp) != NULL) {
printf("%s", path);
}
pclose(fp);
return 0;
}
```
2. 使用 `getpid()` 函数获取当前进程的 PID,然后使用 `fork()` 函数创建一个子进程,在子进程中调用 `exec()` 函数执行其他程序。在父进程中使用 `wait()` 函数等待子进程结束,并获取子进程的 PID。
```c++
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
int main()
{
pid_t pid;
pid = fork();
if (pid == -1) {
perror("fork");
exit(1);
} else if (pid == 0) {
// Child process
execl("<process_path>", "<process_name>", NULL);
perror("exec");
exit(1);
} else {
// Parent process
wait(NULL);
printf("Child process with PID %d has completed.\n", pid);
}
return 0;
}
```
请注意,您需要将 `<process_name>` 和 `<process_path>` 替换为您要获取 PID 的进程的名称和路径。
阅读全文