gpt4 book ai didi

c - 使用 C 中的 fork 扫描目录并同时处理特定文件

转载 作者:行者123 更新时间:2023-11-30 19:32:30 26 4
gpt4 key购买 nike

我的目标是实现“ls”函数,以便我可以扫描指定的目录并查找要处理的 .csv 文件。我现在的想法是每次使用 ls 函数检测到 csv 文件时使用 fork() 创建一个子进程,但我对如何执行此操作感到非常困惑。我已阅读 geeksforgeeks 上的 fork() 页面,如果我每次检测到 csv 文件时都调用 fork,子进程将继续乘以 2?我是否必须将整个处理代码包装在 fork 语句中?如果我等待每个子进程完成后再创建另一个子进程,那么就不是多处理。我仍在学习 C,我发现很难掌握 fork 函数的实际工作原理。任何帮助将不胜感激,谢谢。

最佳答案

基本结构应如下所示:

while(d = readdir(fd) {
if (iscsv(d->d_name)) {
int pid = fork();
switch(pid) {
case 0: // Child process
process_csv(d->d_name);
exit(0);
break;
case -1: // Error
perror("fork");
exit(1);
break;
default: // Parent
printf("Forked PID %d to process %s\n", pid, d->d_name);
}
}

pid的返回值用于区分您是在父级还是子级中继续。子进程处理文件并退出,父进程继续循环。因此,您不会继续加倍进程(称为 fork bomb ),因为只有原始父进程会继续循环和 fork 。

关于c - 使用 C 中的 fork 扫描目录并同时处理特定文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46945739/

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