使用c++编码实现readlink -e /proc/PID/cwd
时间: 2023-12-22 09:05:06 浏览: 43
可以使用 `readlink()` 函数来实现 `readlink -e /proc/PID/cwd` 命令。该函数可以读取符号链接文件的实际路径。具体实现如下:
```c++
#include <unistd.h>
#include <iostream>
int main(int argc, char** argv) {
if (argc != 2) {
std::cerr << "Usage: " << argv[0] << " <pid>" << std::endl;
return 1;
}
// 拼接出 /proc/PID/cwd 路径
std::string path = "/proc/";
path += argv[1];
path += "/cwd";
char buf[1024];
ssize_t len = readlink(path.c_str(), buf, sizeof(buf));
if (len == -1) {
std::cerr << "Failed to read link: " << path << std::endl;
return 1;
}
buf[len] = '\0';
std::cout << buf << std::endl;
return 0;
}
```
可以通过命令行参数传递进程的 PID,例如 `./readlink -e 12345`。该程序会输出该进程的当前工作目录的实际路径。