c++17怎么用std::filesystem::path获取linux当前进程名
时间: 2023-08-03 10:04:54 浏览: 96
你可以使用`/proc`文件系统来获取当前进程的名称,然后使用`std::filesystem::path`类来处理这个路径。具体代码如下:
```c++
#include <iostream>
#include <fstream>
#include <string>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <filesystem>
int main() {
char path[100];
pid_t pid = getpid();
sprintf(path, "/proc/%d/cmdline", pid);
int fd = open(path, O_RDONLY);
char buf[1024];
ssize_t n = read(fd, buf, sizeof(buf));
close(fd);
std::string cmdline(buf, n);
std::filesystem::path p(cmdline);
std::cout << "Current process name: " << p.filename() << std::endl;
return 0;
}
```
这段代码首先获取当前进程的PID,然后使用`sprintf`函数构造`/proc/PID/cmdline`路径,从而获取当前进程的命令行参数。接着使用`std::filesystem::path`类来处理这个路径,最后输出当前进程的名称。
阅读全文