Mam program, który tworzy N procesów, gdzie N jest argumentem wejściowym podanym w linii poleceń. Próbowałem zwiększyć tę wartość i uzyskać fork: Resource temporarily unavailable
.
Nawet przy ustawianiu odpowiednich parametrów otrzymałem takie same wyniki na tej samej wartości N.
kern.maxproc
kern.maxprocperuid
Być może istnieją inne miejsca, do których muszę się odwołać, aby wykonać więcej procesów w mojej stacji.
Wydaje się fork
zwraca errno = 23
co znaczy :
#define ENFILE 23 /* Too many open files in system */
Próbowałem również zwiększyć następujące wartości, ale nie pomogło (choć wątpię, czy jest to istotne, ponieważ moje procesy są proste i nie mają dostępu do żadnego pliku)
maxflies
maxfilesperproc
Ponowne uruchomienie komputera, aby nowa konfiguracja była skuteczna, nie pomoże w tym przypadku, ponieważ zmodyfikowane parametry powracają do wartości domyślnej.
Kod źródłowy mojego programu:
void DoWorkInChild() {
sleep(10);
}
int main (int argc, char *argv[]) {
pid_t pids[100000];
int i;
int n = atoi(argv[1]);
printf("I'm grandParent %d n = %d \n", getpid(), n);
/* Start children. */
for (i = 0; i < n; ++i) {
if ((pids[i] = fork()) < 0) {
printf("errno = %x \n", errno);
perror("fork");
abort();
} else if (pids[i] == 0) {
DoWorkInChild();
exit(0);
} else {
printf("I'm process %d \n", pids[i]);
}
}
/* Wait for children to exit. */
int status;
pid_t pid;
while (n > 0) {
pid = wait(&status);
printf("Child with PID %ld exited with status 0x%x.\n", (long)pid, status);
--n;
}
}
N
? Widziałeś Mac OS X Podpowiedź: Rozwiązanie dla limitów procesowych systemu Mac OS X. ? Czy jesteś twórcą programu tworzącego procesy?Odpowiedzi:
Na szczęście znalazłem następujący skrypt, który powinien zostać uruchomiony przed testami porównawczymi xnu.
Teraz działa, ale nadal nie widać żadnych zmian w / etc / sysctl ... Zastanawiam się, jaka konfiguracja zmieniła się w końcu ...
źródło
/etc/launchd.conf
został zignorowany od 10.10, kiedy launchd został przeprojektowany, więc nie powinien działać, jeśli nie jesteś w wersji 10.9 lub wcześniejszej.