Безопасно ли fork() внутри функции обратного вызова в C?

Я намечаю программу.

По сути, я хочу использовать 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;
        }
    }
}

также разные экземплярыmyexecutableни в коем случае не зависят друг от друга и не делят какие-либо ресурсы. и им не нужно взаимодействовать с родительским процессом и наоборот.

может ли это вызвать проблему с вызывающей функцией?

следует ли ожидать, что nftw сойдет с ума по этому поводу или проявит неопределенное поведение?

0 ответов

Другие вопросы по тегам