C online
Compila y ejecuta C en tu navegador, sin instalar gcc: varios ficheros con sus .h, scanf con la entrada preparada, el error de compilación marcado en su línea y hasta procesos con fork() e hilos con pthread, imitados para que practiques lo de IC2 desde el móvil. Es el mismo entorno del simulacro práctico de IC2.
Cómo se usa
- Ficheros: una pestaña por fichero. Con + creas uno nuevo; con el lápiz (o un doble clic en su nombre) lo renombras, y con la cruz lo borras (pide una segunda pulsación). Los
.hse incluyen con#include "notas.h", como en tu ordenador. - Ejecutar compila todos los
.c(el que tienemain, el último) y ejecuta el programa. Si no compila, el error sale en la Consola con su fichero y su línea, que se marca en el editor. - Entrada: lo que leerán
scanfyfgets, una línea por cada lectura, y en la consola verás lo leído como si lo hubieras tecleado. No es interactivo: escribe los datos antes de ejecutar. - Tu código se guarda solo en este navegador. Con Descargar te llevas el fichero abierto y con .zip, todos, listos para compilarlos con
gccen tu Linux. Con Subir añades tus.c,.ho ficheros de datos (.txt) que tu programa puede abrir confopenuopen. - Compartir crea un enlace con tu código dentro: quien lo abra ve tus ficheros tal cual. El código va en el propio enlace, no se guarda en la web.
- Ayudas activa o quita las sugerencias, el cierre de paréntesis, los colores extra y la línea del error marcada: sin ellas trabajas como con gedit en el examen. El botón de ampliar (arriba a la derecha) pone el entorno a pantalla entera y A− / A+ cambian el tamaño de la letra.
Procesos e hilos en el navegador
El navegador no tiene un Linux debajo, así que el entorno imita lo que se usa en IC2:
fork()crea un proceso hijo con su propia memoria: si el hijo cambia una variable, el padre no se entera, como en Fedora. Funcionangetpid(),getppid()(un hijo huérfano pasa a tener de padre el 1),wait,waitpid,exityWEXITSTATUS. El programa siempre es el proceso 4310 y sus hijos, 4311, 4312…sleepyusleepno te hacen esperar de verdad (como mucho unos segundos), pero la salida sale en el orden del reloj: lo que el padre imprime después de suwaitaparece después de lo que imprime el hijo antes de terminar.- Los hilos (
pthread_create,pthread_join,pthread_exity los mutex) se ejecutan uno detrás de otro, así que aquí no verás una condición de carrera: para eso, tu Fedora. Simaintermina sinpthread_join, el entorno te avisa de que los hilos no han llegado a ejecutarse. - No hay
exec, tuberías, señales nipsopstree: esas capturas, en tu Linux.
Pega esto en el entorno y ejecútalo:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>
int main() {
int x = 10;
pid_t pid = fork();
if (pid == 0) {
x = 99; // solo cambia la x del hijo
printf("Hijo %d (padre %d): x = %d\n", getpid(), getppid(), x);
sleep(2);
exit(3);
}
int estado;
wait(&estado);
printf("Padre %d: mi hijo devolvió %d y mi x sigue valiendo %d\n", getpid(), WEXITSTATUS(estado), x);
return 0;
}
Qué puedes hacer y qué no
- Compila con xcc, un compilador de C escrito para WebAssembly (de código abierto, licencia MIT), con su biblioteca estándar:
stdio.h,stdlib.h,string.h,math.h,ctype.h, ficheros confopeny conopen/read/write,mallocyfree. - Es más estricto que
gccen algunas cosas: unscanf("%d", x)sin&no compila (en gcc solo es un aviso, y luego el programa se rompe). - Avisa de los errores que en Fedora serían un
Segmentation fault: un índice fuera de un vector, un punteroNULLo una recursión que no termina, con su línea. - Cada ejecución puede durar como mucho 15 segundos: un bucle infinito se para solo, y también tienes el botón Parar.
- La primera vez descarga el compilador (medio mega); después arranca al momento.
Practica con él
- Los ejercicios con solución de C en IC2: copia el enunciado, prográmalo aquí y compara con la solución.
- El simulacro del examen práctico de IC2, con este mismo entorno en los ejercicios de programar.
- Si también estudias Python o Java, tienes el entorno de Python y el de Java, y en Entornos irán llegando los demás.

El hardware que sostiene al sistema operativo — teoría con la práctica de IC2 en la impresora, una interrupción que lo para todo y una caché que acierta (y el bucle infinito que no colgó mi portátil)