- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在计算包含数百万个文件(每个大约 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/
我正在尝试使用 posix_spawn() 创建一个新的子进程。子进程启动后,调用者进程应该继续运行。 TLDR:为什么 posix_spawn() 返回 0(成功),即使子可执行文件的路径无效(不存
我正在编写一个小程序,它有点像一个服务器,它产生它的客户端程序(在本地,而不是通过网络)并在它们之间做一些有趣的事情。虽然我使用的主要操作系统是 Linux,但我希望它能在包括 Windows 在内的
我正在尝试使用 posix_spawn() 生成一个子进程.我给出了可执行文件名称(存在)但是 posix_spawn()创建一个僵尸进程(我在 ps 中搜索该进程,它显示为 )。即使我指定了一个不
我正在尝试使用posix_spawn而不是fork/exec来获得一些性能提升。我当前的项目是用Python编写的,所以我使用了this Python 绑定(bind)。我还尝试了它的一些分支,之后我
您好,我只是想在 OSX 上使用 posix_spawn,无论如何在 posix_spawn 系统调用之后,这应该可以找到(对于 *nix),进程将收到 SIGTRAP,我真的无法理解为什么。 #in
我从 here 中找到了使用 posix_spaw() 的示例代码. 在该页面中,run_cmd() 定义如下。 void run_cmd(char *cmd) { ... statu
ProcessBuilder.start 和 Runtime.exec 似乎在 *NIX 系统上使用 fork(),这似乎为子进程分配了与父进程相同数量的内存(参见例如 this question )
我想使用 posix_spawn(...) (或非常类似的东西)生成一组进程。此函数接受类型为 posix_spawn_file_actions_t 的参数,它允许我指定应如何处理打开的文件句柄。从我
我正在使用以下代码在 Linux 中启动新进程 pid_t processID; char *argV[] = {"192.168.1.40",(char *) 0}; int status = -1
我有一个 rsync 守护进程正在运行,我可以成功执行以下命令: rsync --port=1873 -avWh 127.0.0.1::jackfruit_peers/data.0a6/home/v/
我正在计算包含数百万个文件(每个大约 1K)的文件夹的大小,而 NSFileManager/NSDirectoryEnumerator 只是无法削减它。 我突然想到要在 Unix 级别而不是 Fo
我有以下代码片段。 char *const parmList[] = {"sh", "-c", "whoami", NULL}; if(geteuid() == 0) { seteuid(ato
OSX 手册页在 posix_spawn 中提到了 POSIX_SPAWN_SETEXEC 位系统调用: POSIX_SPAWN_SETEXEC Apple Extension: If this bi
所以我看到头文件 spawn.h 大量使用了'restrict': extern int posix_spawn (pid_t *__restrict __pid, const cha
虽然内核将页(和页表)标记为写时复制以使 fork 系统调用高效工作,但页表和相关结构的创建和拆除仍然是一项昂贵的任务。 因此,我想知道为什么 linux 社区从未设法将 posix_spawn 实现
我继承了一个遗留应用程序,它使用 ProcessBuilder.start() 在 Solaris 10 服务器上执行脚本。 不幸的是,由于内存问题,此脚本调用失败,如文档所述here Oracle
对于 the posix_spawn function它的原型(prototype)是: int posix_spawn(pid_t *restrict pid, const char *restri
我很好奇是否可以实现 posix_spawn在 Linux 中使用 vfork+exec 的组合。以一种非常简化的方式(省略大多数可选参数),这看起来或多或少像这样: int my_posix_spa
此问题是 this question 的后续问题. 当 posix_spawn() 发出 bash 命令时,我收到消息: bash: no job control in this shell 我认为是
我成功地使用 popen() 从我的 C 程序中运行命令。据我了解,它在幕后使用了 fork() 和 exec()(或它们的变体)。这非常有效: FILE *fd = popen("xterm", "
我是一名优秀的程序员,十分优秀!