在C++中获取后台shell命令的PID可以使用popen
函数和pclose
函数来实现。popen
函数可以执行一个shell命令,并返回一个文件指针,通过该文件指针可以读取命令的输出。而pclose
函数可以关闭文件指针,并返回命令的退出状态。
下面是一个示例代码:
#include <iostream>
#include <cstdio>
#include <cstring>
int main() {
FILE* pipe = popen("your_shell_command & echo $!", "r");
if (!pipe) {
std::cerr << "Error executing shell command" << std::endl;
return -1;
}
char buffer[128];
std::string result = "";
while (!feof(pipe)) {
if (fgets(buffer, 128, pipe) != NULL)
result += buffer;
}
pclose(pipe);
// 提取PID
size_t pos = result.find_first_of("\n");
std::string pid = result.substr(0, pos);
std::cout << "PID: " << pid << std::endl;
return 0;
}
上述代码中,your_shell_command
是你要执行的后台shell命令。&
符号用于将命令放到后台执行。echo $!
用于输出命令的PID。
这段代码使用popen
函数执行shell命令,并通过循环读取命令的输出,将输出保存在result
字符串中。然后使用pclose
函数关闭文件指针。
最后,使用find_first_of
函数和substr
函数提取PID,并输出到控制台。
请注意,这只是一个示例代码,实际使用时需要根据具体情况进行修改和优化。
领取专属 10元无门槛券
手把手带您无忧上云