Безопасно ли 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 сойдет с ума по этому поводу или проявит неопределенное поведение?