gpt4 book ai didi

ios - 在 iOS 上调用 posix_spawn

转载 作者:行者123 更新时间:2023-11-30 17:06:10 24 4
gpt4 key购买 nike

我正在计算包​​含数百万个文件(每个大约 1K)的文件夹的大小,而 NSFileManager/NSDirectoryEnumerator 只是无法削减它。

我突然想到要在 Unix 级别而不是 Foundation 级别上执行此操作。我知道不鼓励/禁用 fork() ,首选方法是调用 posix_spawn 并将输出重定向/管道到 C 字符串缓冲区。如何做到这一点?

不鼓励实现:

FILE *fp;
int status;
char output[PATH_MAX];
NSString *cmd = [NSString stringWithFormat:@"du -sk %@", folderPath];
fp = popen([cmd UTF8String], "r");
if (fp == NULL) {
NSLog(@"could not get file pointer");
return 0;
}
while (fgets(output, PATH_MAX, fp) != NULL) {
NSLog(@"size and path: %s", output);
}
status = pclose(fp);
if (status == -1) {
NSLog(@"could not close file pointer");
} else {
NSLog(@"closed file pointer");
}

最佳答案

如果您想要比 CoreFoundation 方法更快的方法,请直接使用 opendir()readdir()stat() 来枚举目录并获取文件的大小。

不过,最终您可能会遇到 iOS 设备上的存储速度限制,因此对于您正在处理的文件数量而言,此操作可能永远不会很快。

关于ios - 在 iOS 上调用 posix_spawn,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34863837/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com