在我的linux机器中,如果我尝试复制/ proc / stat,则创建0字节文件。 但如果我做cat / proc / stat它有数据。但大小始终显示为0.
cp /proc/stat statfile
正在创建零字节文件。 如果我写一个程序来复制,那么它是有效的。为什么会这样?
int main()
{
std::ifstream procFile("/proc/stat");
std::ofstream outfile("statfile");
char buf[1024];
while (!procFile.eof() && procFile.is_open())
{
procFile.getline(buf, 1024);
outfile << buf<<endl;
}
procFile.close();
outfile.close();
return 0;
}
答案 0 :(得分:7)
/proc
是一个伪文件系统。它表示文件/proc/stat
的大小为0。
这就是复制不起作用的原因(cp首先查看它必须复制的文件的大小),但您可以轻松读取信息并将其写回文件。
$> cat /proc/stat > statfile
这在GNU coreutils 7.3中是fixed。
答案 1 :(得分:0)
使用find
以root用户身份执行cp
,如图所示
find /proc/cpuinfo -type f -exec cp -iv '{}' /home/dir/ \;
这是我的尝试,
~/cpuinfo$ ls
~/cpuinfo$ sudo find /proc/cpuinfo -type f -exec cp -iv '{}' /home/esunboj/
stackoverflow/cpuinfo/ \;
`/proc/cpuinfo' -> `/home/esunboj/stackoverflow/cpuinfo/cpuinfo'
~/cpuinfo$ ls
cpuinfo
此外,由于所述/proc
是一个伪文件系统,这意味着文件不存储在磁盘上,而是与内核挂钩。您可以像普通文件操作一样从用户空间读取和/或写入每个条目。通常是不同的监控程序,当它们fopen
一个文件时,它现在的内核工作就是找到处理任务并将其分配给该驱动程序的相应驱动程序。在/proc
的情况下,其内核中的proc系统将读取内存实体,其中涉及系统负载的成本。