Domingo 15 de Diciembre de 2024, 23:56
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
CTRL+D
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: CTRL+D (Leído 2185 veces)
Igy
Nuevo Miembro
Mensajes: 8
CTRL+D
«
en:
Martes 17 de Noviembre de 2009, 16:21 »
0
buenas, ¿alguien sabe cómo hago para que mi programa, en continua ejecución, se cierre cuando el usuario pulsa CTRL+D? gracias
Tweet
Eternal Idol
Moderador
Mensajes: 4696
Nacionalidad:
Re: CTRL+D
«
Respuesta #1 en:
Martes 17 de Noviembre de 2009, 17:26 »
0
¿Para que S.O.?
Nacional y Popular
En mi país la bandera de Eva es inmortal.
Queremos una Argentina socialmente justa, económicamente libre y políticamente soberana.
¡Perón cumple, Evita dignifica!
La mano invisible del mercado me robo la billetera.
Igy
Nuevo Miembro
Mensajes: 8
Re: CTRL+D
«
Respuesta #2 en:
Martes 17 de Noviembre de 2009, 17:40 »
0
para Linux, pero mi comando se ejecuta mediante linea de comandos, y muestra un menu (sin aplicacion grafica) y cada vez que termina de hacer la operacion seleccionada en el menu, vuelve al menu. el tema es que el programa termine cuando el usuario le de a CTRL+D
Eternal Idol
Moderador
Mensajes: 4696
Nacionalidad:
Re: CTRL+D
«
Respuesta #3 en:
Martes 17 de Noviembre de 2009, 20:03 »
0
Cuando se hace CTRL+D la funcion feof sobre el stdin (previa lectura por supuesto) devuelve verdadero.
Nacional y Popular
En mi país la bandera de Eva es inmortal.
Queremos una Argentina socialmente justa, económicamente libre y políticamente soberana.
¡Perón cumple, Evita dignifica!
La mano invisible del mercado me robo la billetera.
Igy
Nuevo Miembro
Mensajes: 8
Re: CTRL+D
«
Respuesta #4 en:
Miércoles 18 de Noviembre de 2009, 11:26 »
0
hummm no te sigo. quiero decir, según he leído, la funcion feof me devuelve 0 si estoy al final del archivo.
pero mi programa ni siquiera tiene por que contener un archivo. mi programa se ejecuta en el terminal y por defecto se cierra con CTRL+C, pero tengo que conseguir que lo haga con CTRL+D. no me entero de la relacion entre el feof y lo que busco.
Eternal Idol
Moderador
Mensajes: 4696
Nacionalidad:
Re: CTRL+D
«
Respuesta #5 en:
Miércoles 18 de Noviembre de 2009, 11:32 »
0
Si tenes que deshabilitar el Ctrl+C entonces tenes que trabajar con señales, sino unicamente tenes que leer del teclado (un bucle con fgets deberia ser suficiente para terminar si usas Ctrl+D, probalom, me referia a feof con stdin).
Nacional y Popular
En mi país la bandera de Eva es inmortal.
Queremos una Argentina socialmente justa, económicamente libre y políticamente soberana.
¡Perón cumple, Evita dignifica!
La mano invisible del mercado me robo la billetera.
Igy
Nuevo Miembro
Mensajes: 8
Re: CTRL+D
«
Respuesta #6 en:
Jueves 19 de Noviembre de 2009, 12:21 »
0
vale, ya lo entendi, era tan facil como ejecutar el menu con un while(!feof(stdin)); no entendia al principio lo que querias decir. un millon de gracias.
ya que estoy te pregunto otra dudilla que me pasa.
guardo una serie de puntos (con sus 3 coordenadas y tal) en un fichero, me los guarda con una opcion y me los "carga" con otra, pero por alguna razon me imprime un punto de mas con todas las coordenadas a 0, y no se porque es. es algo asi:
while(!feof(f)){
new=(point*)malloc...
fread de las coordenadas
}
¿por que me pasa? no te pongo el codigo mas detallado porque creo que es un tema del feof. he probado a borrar el ultimo punto pero por alguna razon me ignora y (sin darme error), me sigue imprimiendo un pnto con todo a 0.
Eternal Idol
Moderador
Mensajes: 4696
Nacionalidad:
Re: CTRL+D
«
Respuesta #7 en:
Jueves 19 de Noviembre de 2009, 12:25 »
0
No tengo ni la menor idea de a que pueda deberse ese error, lo mejor seria que lo depuraras linea a linea, asi podrias ver que esta leyendo. Puede que estes usando datos cuando la lectura fallo por ejemplo.
Nacional y Popular
En mi país la bandera de Eva es inmortal.
Queremos una Argentina socialmente justa, económicamente libre y políticamente soberana.
¡Perón cumple, Evita dignifica!
La mano invisible del mercado me robo la billetera.
Igy
Nuevo Miembro
Mensajes: 8
Re: CTRL+D
«
Respuesta #8 en:
Viernes 20 de Noviembre de 2009, 11:21 »
0
vale ya lo dscubri (bueno, me lo dijeron). resulta que EOF lee y se queda en la ultima posicion, por lo que cuando vuelvo al while tras haber leido el último punto aun no se ha salido por lo que vuelve a entrar en el while. el tema esta en que se sale tras volver a leer despues de haber leido el ultimo punto, con lo que le pongo un if(!feof(f)) despues de leer la primera coordenada y ya esta.
no se si me he explicado muy bien.
muchas gracias eternal idol
Eternal Idol
Moderador
Mensajes: 4696
Nacionalidad:
Re: CTRL+D
«
Respuesta #9 en:
Viernes 20 de Noviembre de 2009, 11:41 »
0
De nadasd
Nacional y Popular
En mi país la bandera de Eva es inmortal.
Queremos una Argentina socialmente justa, económicamente libre y políticamente soberana.
¡Perón cumple, Evita dignifica!
La mano invisible del mercado me robo la billetera.
Igy
Nuevo Miembro
Mensajes: 8
Re: CTRL+D
«
Respuesta #10 en:
Jueves 26 de Noviembre de 2009, 15:15 »
0
Buenas, probando y probando el programa me dado cuenta de que si lo hago tras haber hecho ya cosas me sale del programa perfectamente. Pero si lo hago siendo mi primera opción, lo primero que hago tras ejecutar el programa, me da un fallo de segmentación y la verdad es que no se por qué. Dado que la opción la recojo con un scanf, me planteo el hecho de que poner un getline y que eso pueda solucionar el error, puesto que el scanf es muy "especialito".
Eternal Idol
Moderador
Mensajes: 4696
Nacionalidad:
Re: CTRL+D
«
Respuesta #11 en:
Jueves 26 de Noviembre de 2009, 15:34 »
0
scanf es preferible no usar nunca, fgets (con stdin) + sscanf es mucho mejor opcion.
Para el fallo de segmentacion compila el programa con -g y usa gdb para depurarlo.
Nacional y Popular
En mi país la bandera de Eva es inmortal.
Queremos una Argentina socialmente justa, económicamente libre y políticamente soberana.
¡Perón cumple, Evita dignifica!
La mano invisible del mercado me robo la billetera.
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
CTRL+D