CUESTIÓN

Cuando compilo mi progrma aparece:
/alumnos/inf/infXXXX/sistemas/sesion2/practica1 > make
        c89 -g practica1.o -o cambiala -lm
/usr/ccs/bin/ld: Can't create cambiala
/usr/ccs/bin/ld: Text file busy
*** Error exit code 1

Stop.               
¿Por qué está el fichero de texto ocupado?


SOLUCIÓN

En realidad el enlazador no está avisando de que ningún fichero de texto esté ocupado. Text está mejor traducido aquí por código. Nos dice que el fichero de código está ocupado y eso es que el fichero ejecutable está ocupado. Está ocupado porque está ejecutándose de antes y el enlazador no puede sobreescribir el fichero antiguo en ejecución con otro nuevo. Podemos verlo si ejecutamos:
/alumnos/inf/infXXXX/sistemas/sesion2/practica1 > ps -fu infXXXX
     UID   PID  PPID  C    STIME TTY       TIME COMMAND
infXXXX 20709 20708  1 17:08:38 pts/tV    0:00 -ksh
infXXXX 22098 20709  0 17:22:04 pts/tV    0:00 cat
infXXXX 22323 20709  0 17:24:21 pts/tV    0:00 cat
infXXXX 22465 20709  0 17:25:35 pts/tV    0:03 cambiala clara.txt
infXXXX 22354 20709  0 17:24:41 pts/tV    0:08 cambiala clara.txt
infXXXX 22844 20709  7 17:30:37 pts/tV    0:00 ps -fu infXXXX
Hay que matar primero los procesos de PID 22465 y 22354 para poder recompilar.
© 2000 Guillermo González Talaván.