小编hir*_*ari的帖子

在 C 的回调函数中 fork() 安全吗?

我正在概述一个计划。

基本上,我想使用 nftw 遍历目录树并执行任务(myexecutable)。

该函数 nftw 以 (fn) 作为参数,并将其用作回调函数。

现在,我计划在这个回调函数中使用经典的 fork-exec,我已经定义了该回调函数,以便通过将任务分配给不同文件的同一进程的多个实例来获得尽可能快的速度,从而几乎同时发生。

假设我想对每个文件执行操作 P。所以我定义我的回调函数如下:

static int fn(const char* pathname, const struct stat* st, int tf, struct FTW* ff){
    if(tf == FTW_F){
        if(fork() == 0){
            execl("myexecutable", "myexecutable", pathname, NULL);
            exit(0);
        }else{
            return 0;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

不同的实例也不myexecutable以任何方式相互依赖或共享任何资源。并且它们不需要与父进程通信,反之亦然。

这会导致调用函数出现问题吗?

我是否应该期望 nftw 对此感到疯狂或表现出未定义的行为?

c fork callback exec nftw

2
推荐指数
1
解决办法
108
查看次数

标签 统计

c ×1

callback ×1

exec ×1

fork ×1

nftw ×1