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.