elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Funciona en Windows, pero no en linux...
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Funciona en Windows, pero no en linux...  (Leído 6,754 veces)
dgg006

Desconectado Desconectado

Mensajes: 20


Ver Perfil
Funciona en Windows, pero no en linux...
« en: 28 Mayo 2011, 16:15 pm »

Hola,
Primero que nada me presento.
Mi nombre es Delmo Gonzalez... dgg006 en Internet..
Estoy estudiando informática, y este año tenemos que entregar un proyecto.


Una pequeña parte del proyecto que elegimos, consta de un programa basico, que busque cambios continuamente en un TXT. y haga una accion segun el contenido.
Logré (con esfuerzo, porque no 100% novato en esto) escribir este codigo:

Código:
#include <stdio.h>

int main ()
{
    int resul;
    int estado=-1;
    int infinito=0;

    FILE *texto;
    texto = fopen ("Cocina.txt","r");
    fscanf (texto, "%d",&resul);
    fclose (texto);

    while (infinito == 0)
    {
        switch (resul)
        {
            case 0:
            texto = fopen ("Cocina.txt","r");
            fscanf (texto, "%d",&resul);
            fclose (texto);
            if (estado != 0)
            {
                system("cls");
                printf ("Apagado");
            }
                    estado=0;
                    break;
            case 1:
            texto = fopen ("Cocina.txt","r");
            fscanf (texto, "%d",&resul);
            fclose (texto);
            if (estado != 1)
            {
                system("cls");
                printf ("Encendido");
            }
                    estado=1;
                    break;
        }
    }
}

En windows, funciona perfecto, pero la idea es hacerlo correr en linux server. Cuando lo compilo ahí, compila sin errores, pero NO HACE NADA!!
Queda en negro.
En que estoy fallando? Algo falta para que funcione en linux?
(los system("cls"), hay que cambiarlos por system("clear") para que funcione en linux)
Les comento lo que tiene que hacer este programa.
Lee dentro del TXT.
Si hay un 1, muestra Encendido.
Si hay un 0, muestra Apagado.
Todo dentro de un bucle infinito!!!

A futuro, en lugar de mostrar encendido o apagado, tiene que activar o desactivar un relay en el puerto paralelo, pero supongo que esos códigos irán luego dentro de este. Por algo se empieza.
Gracias y espero sus respuestas


En línea

Oblivi0n


Desconectado Desconectado

Mensajes: 392

Odio las ranas.


Ver Perfil
Re: Funciona en Windows, pero no en linux...
« Respuesta #1 en: 28 Mayo 2011, 16:48 pm »

usas
Código:
system("cls")
y ese comando es unico de windows (creo), en linux creo que se puede usar "clear"

saludos


En línea

dgg006

Desconectado Desconectado

Mensajes: 20


Ver Perfil
Re: Funciona en Windows, pero no en linux...
« Respuesta #2 en: 28 Mayo 2011, 16:49 pm »

Gracias por la pronta respuesta, pero si te fijas, ya lo había aclarado, ese codigo tal como esta funciona en windows
En línea

Oblivi0n


Desconectado Desconectado

Mensajes: 392

Odio las ranas.


Ver Perfil
Re: Funciona en Windows, pero no en linux...
« Respuesta #3 en: 28 Mayo 2011, 17:03 pm »

Lo siento no habia leido la parte de abajo  :xD

si te compila sin errores entonces ya no tengo ni idea  :-\
En línea

dakomt

Desconectado Desconectado

Mensajes: 76


Viking Metal


Ver Perfil
Re: Funciona en Windows, pero no en linux...
« Respuesta #4 en: 28 Mayo 2011, 17:24 pm »

una corazonada..... añade un salto de linea a los printf... es decir...

Código:
printf ("Apagado\n");

printf ("Encendido\n");
En línea

dgg006

Desconectado Desconectado

Mensajes: 20


Ver Perfil
Re: Funciona en Windows, pero no en linux...
« Respuesta #5 en: 28 Mayo 2011, 18:02 pm »

una corazonada..... añade un salto de linea a los printf... es decir...

Código:
printf ("Apagado\n");

printf ("Encendido\n");
LITERALMENTE!!!
Me la quiero cortar!!
Podes creer que era eso!! WTF
No lo vi necesario, para que una nueva linea si antes borro la pantalla.
Un millón de gracias!!

Ahora solo me falta incluirle a este código los comandos para controlar el paralelo.
Ya me verán preguntando por ak :P
Otra ves gracias!
En línea

dakomt

Desconectado Desconectado

Mensajes: 76


Viking Metal


Ver Perfil
Re: Funciona en Windows, pero no en linux...
« Respuesta #6 en: 28 Mayo 2011, 18:26 pm »

me alegro  :xD

Suerte con el proyecto!


PD: Un consejo! Si vas a tener una parte monitorizando constantemente el fichero (lectura) y vas a tener alguna otra que escriba en el fichero,tal vez deberias considerar la posibilidad de tratarlo como un recurso compartido y controlar el acceso al mismo mediante cerrojos. Pero bueno ya dependera exactamente de como tengas planteado el sistema... simplemente te lo comento por si acaso  :D
En línea

dgg006

Desconectado Desconectado

Mensajes: 20


Ver Perfil
Re: Funciona en Windows, pero no en linux...
« Respuesta #7 en: 28 Mayo 2011, 18:29 pm »

Me interesa TOTALMENTE lo que me decís.
He tenido errores en ocasiones.

Quien escribe ese TXT en una pagina en PHP, y claro, si tenes la mala suerte de clickear en el momento de la lectura del programa en C, me tira un error.
Podes explicarme como lo soluciono?
En línea

dakomt

Desconectado Desconectado

Mensajes: 76


Viking Metal


Ver Perfil
Re: Funciona en Windows, pero no en linux...
« Respuesta #8 en: 29 Mayo 2011, 17:13 pm »

Mmmm seguramente habra muchas formas de solucionar eso... unas mas elegantes que otras...

Si la página PHP y el programa en C residen en la misma máquina tal vez podrías usar la creación de un archivo temporal y la comprobación de que éste ya exista para implementar un cerrojo... es decir:

1. Mientras exista el fichero 'cerrojo.tmp'--> me quedo esperando
2. (ya no existe el fichero 'cerrojo.tmp' --> lo creo
2.1 si no he podido crearlo vuelvo a 1 para comprobar si el otro programa lo ha creado antes que yo
3. realizo el acceso al fichero Cocina.txt (el programa PHP para escribir , en el caso del C para leer)
4. Elimino el fichero 'cerrojo.tmp'

El codigo de ambos programas seria algo parecido a los puntos anteriores.

No obstante no creo que sea muy eficiente/elegante esta solución... Otra posibilidad tal vez... es convertir el programa en C en un cgi-bin que seria invocado por la pagina PHP cuando hubiera un cambio de estado y de esta forma no seria necesario estar continuamente monitorizando el estado del  fichero Cocina.txt. Pero nuevamente es solo una idea más.. tampoco se como tienes planteado la globalidad del sistema.

Saludos!
En línea

dgg006

Desconectado Desconectado

Mensajes: 20


Ver Perfil
Re: Funciona en Windows, pero no en linux...
« Respuesta #9 en: 31 Mayo 2011, 15:52 pm »

Lo que se me habia ocurrido, pero no he tenido tiempo de ponerme a pensar como hacerlo, es desde el PHP.
Osea,
1) Trato de escribir en Cocina.txt
2) Si NO puedo escribir en Cocina.txt (porque esta ocupado)
3) Reintento

Si eso esta dentro d un bucle, no tendria porque mostrar error, y en algún momento lo va a lograr.... Tengo que ver como se hace..

Ya que estamos, quería hacer otra pregunta,
En el paralelo, va a haber 3 o 4 cosas conectadas, como hago para "activar" de a una individualmente???
Todavía no he buscado demasiado del tema, pero por lo que he visto, mandan la orden en binario a todos los puertos.
Ejemplo:
Cocina: "Encendida"
Habitación: "Apagada"
Baño: "Encendido"

Si con este programa solo quiero prender o apagar la Cocina, como hago para que los demás queden como están?
Espero haberme explicado :S
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
funcion md5 no funciona bien en linux (pero si en windows)
Programación C/C++
envai 1 3,834 Último mensaje 26 Febrero 2011, 23:27 pm
por Leber
En Windows si, pero Linux no =(
Programación C/C++
Morringos 4 4,295 Último mensaje 11 Septiembre 2011, 00:05 am
por Eternal Idol
He instalado Windows 8 pero no me funciona Internet
Redes
musguito 1 3,129 Último mensaje 13 Noviembre 2012, 01:45 am
por adgellida
Esta alternativa a Windows 10 funciona con Linux, y es gratis
GNU/Linux
Machacador 1 2,134 Último mensaje 23 Noviembre 2016, 16:29 pm
por #!drvy
Windows 10 permitirá tener cuentas protegidas pero sin contraseña:¿cómo funciona
Noticias
wolfbcn 0 1,243 Último mensaje 4 Enero 2019, 14:46 pm
por wolfbcn
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines