如何使用 C 中的 stat 检测 ~/ 中的现有目录?

问题描述 投票:0回答:1

如果目录

~/testdir
不存在,我想创建它。 在测试之前,我创建了目录
~/testdir
,但是
stat
没有检测到它,程序尝试再次创建它。 我只在
~/
发现这个问题。


#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>

void main()
{
   system("mkdir ~/testdir");
   struct stat st = {0};
   if (stat("~/testdir", &st) == -1)
   {
       system("mkdir ~/testdir");
   }
}

结果:

mkdir: cannot create directory ‘/home/pi/testdir’: File exists
c directory mkdir stat
1个回答
0
投票

~
是 shell 扩展到您的主目录的别名。这就是它在
system
内部工作的原因,它在 shell 中运行命令。以及为什么它在
stat
中不起作用,它不进行此类扩展,而是在当前目录下寻找一个字面上称为
~/testdir
的文件。

您需要获取主目录(例如https://stackoverflow.com/a/2910392/21105992)并自行构建路径。

© www.soinside.com 2019 - 2024. All rights reserved.