Maybe a threaded version could be a bit faster, you've to adjust the mount()
parameters yourself.
#include <stdio.h>
#include <pthread.h>
#include <sys/mount.h>
#include <string.h>
#include <errno.h>
#define DEVS 100
static void *mountt(void *d)
{
int i = (int)d;
char loop[48], mp[48];
snprintf(loop, 47, "/dev/loop%d", i);
snprintf(mp, 47, "/mnt/%d", i);
if (mount(loop, mp, "ext2", MS_MGC_VAL | MS_RDONLY | MS_NOSUID, "") < 0)
fprintf(stderr, "mount[%d]: failed: %s\n", i, strerror(errno));
return NULL;
}
int main(int argc, char **argv)
{
int i;
pthread_t tt[DEVS];
for (i=0; i<DEVS; i++) {
if (pthread_create( &tt[i], NULL, mountt, (void*)i) != 0)
fprintf(stderr, "thread create[%d] failed: %s\n", i, strerror(errno));
}
for (i=0; i<DEVS; i++)
pthread_join(tt[i], NULL);
return 0;
}
gcc -O2 -Wall -o mountt mountt.c -lpthread