¿Y cómo puede uno saber si alguno de ellos está ocurriendo y llevar a un error devuelto por fork() o system()? En otras palabras, si fork() o system() regresa con un error, ¿cuáles son algunas cosas en Linux que puedo verificar para diagnosticar por qué ocurre ese error en particular?¿Cuáles son algunas condiciones que pueden causar fallas en fork() o system() en Linux?
Por ejemplo:
- Sólo una simple sin memoria (resultados en ENOMEM errno) - Controlar el uso de memoria con 'libre', etc.
- No hay memoria suficiente para el kernel para copiar las tablas de páginas y otra información contable del proceso principal (resultados en errno EAGAIN)
- ¿Hay un límite de proceso global? (resultados en errno EAGAIN también?)
- ¿Hay un límite de proceso por usuario? ¿Cómo puedo averiguar qué es?
- ...?
para aclarar, cuando se sabe que se ha producido un error como EAGAIN durante el tenedor() (errno == EAGAIN), ¿cómo encontrar lo que causó específicamente (se lo RLIMIT_NPROC? ¿Fue un error de copia tablas de páginas, o estructura de la tarea, y si es así ¿por qué?¿Y cómo lo evitas?) –
También hice una pregunta diferente, pero relacionada con las tablas de páginas en Linux: http://stackoverflow.com/questions/853736/how-to-find-or-calculate-a-linux- processs-page-table-size-and-other-kernel-accou –