Foros de daboweb

MULTIMEDIA, Video digital, Grabación, Diseño gráfico, Diseño web, Programación => Webmasters - Diseño Web - Programación - Diseño gráfico => Mensaje iniciado por: jirho en 14 de Abril de 2004, 04:39:25 pm

Título: ...Diferencias C bajo Linux/C bajo Windows(C Basico)
Publicado por: jirho en 14 de Abril de 2004, 04:39:25 pm
...Pues lo dicho, aqui para ir poniendo las diferecnias que hay entre Linux/Windows para programar en C...

...NOTA:  No es mucho, pero es importante tenerlas en cuenta...
Título: Re
Publicado por: ElCorvaq en 15 de Abril de 2004, 03:21:45 pm
La verdad es que window y  Linux son tan diferentes que hacer interfaces que funcionen
igual en los dos sistemas operativos es imposible en algunos casos. Linux usa por
ejemplo los sockets de berkeley definidos en sys/socket.h mientras que Windows
hace su propia implementación de estos en winsock y no todas las funciones son
iguales. Una solución para no romperse la cabeza mucho es libnet, que permite
construir sockets y paquetes fácilmente para los dos sistemas operativos.
Otra diferencia son los pipes, que en Linux son  muy diferentes a windows. Windows
soporta pipes con nombre y un canal bidireccional, mientras que linux utiliza dos canales
(dos descriptores) para realizar la lectura/escritura en el canal. Además, ya que
para crear pipes tienes que utilizar funciones del API de win como CreateNamedPipe
y OpenFile,ReadFile y WriteFile lo que hacen que tu programa ya no sea portable pero
por el contrario te permiten hacer lecturas/escrituras asíncronas(no bloqueantes) sin
tener que utilizar threads o procesos creados por ti. Realmente sí se puede es preferible
hacer programas portables pero por mucho que dijesen mis profes en primero de la uni
la verdadera potencia está en utilizar el API particular que los sistemas operativos exponen ya que usar otras cosas a veces simplemente es usar una interfaz para el api
particular que cada sistema operativo te provee(con lo que ello puede suponer para el
rendimiento, el tamaño del programa los fallos y demás).

Saludos
Título: Re: Re
Publicado por: jirho en 15 de Abril de 2004, 05:24:34 pm
...pues la verdad me ha sorprendido amigo, pero nos estamos enfocando solo en programacion de C, librerias basicas...por ejemplo...

conio.h si va en Windows pero no en Linux, la tabla ascci, tambien se puede tomar como parte de ello...gracias amigo un gran texto...
Título: Re: Re
Publicado por: jirho en 16 de Abril de 2004, 04:29:14 pm
...bien ya sabes amigo, en ningun m,omento he dicho que esta mal lo que has posteado...venga todo que de todo sirve sigue posteando como quieras...solo te lo dije..por que los tuyos son conceptos avanzados y estamos empezando...bien...gracias amigo...y disculpa si me interpretaste mal...
Título: saludos?
Publicado por: lobo15 en 23 de Abril de 2004, 03:55:09 am
hola:gente

biem dicho local pero mejor seria paso a paso para seguir una secuencia
jejeje......... :lol:  :lol:  :lol:

yo creo k esto esta enfocado en codigo verdad  :wink: ,por otro lado aca aprendemos todos saluete... :)

____________________________________________________________________
la saviduria es como una flor k para k floresca hay k cultivarla todos los dias (lobo15)
____________________________________________________________________
Título: Re: saludos?
Publicado por: jirho en 23 de Abril de 2004, 04:32:47 pm
...por supuesto que si amigo, no te preocupes que sera lo mas detallado posible...esta un poco descuidado por que etoy en parciales y ya son finales...los mas duros entonces me toca meterme con todo...ya veras como avzanza esto... :wink: ...
Título: ...Diferencias C bajo Linux/C bajo Windows(C Basico)
Publicado por: BuHo en 23 de Abril de 2004, 05:40:53 pm
Igualmente, yo estoy hasta arriba. A ratos escribo lo siguiente que será sobre tipos y manejo básico. Es algo bastante corto y sencillo pero como no tengo tiempo lo estoy escribiendo a ratos.

Un saludos.
Título: ...Diferencias C bajo Linux/C bajo Windows(C Basico)
Publicado por: jirho en 23 de Abril de 2004, 09:53:10 pm
...Si amigos...aunque tal vez "no crean", apezar de que vivimos en los dos lados del mundo...los parciales nos cojen por igual, por eso cuando se apaga un poco el foro es porque todos estamos llenos de estudio y de trabajo, pero eso es pasajero y ya comenzamos de nuevo... :wink: ....
Título: ...Diferencias C bajo Linux/C bajo Windows(C Basico)
Publicado por: ALP en 24 de Abril de 2004, 06:03:07 pm
un ejemplo:

LINUX:
Código: [Seleccionar]

#include <stdio.h>

int main()
{
    printf("Hola mundo");
    return 0;
}


WINDOWS:
Código: [Seleccionar]

#include <windows.h>

LRESULT CALLBACK GestWndPrueba(HWND, UINT, WPARAM, LPARAM);

int WINAPI WinMain(HINSTANCE hInst, HINSTANCE, LPSTR, int)
{
   MSG             msg;
   HWND          hWnd;
   WNDCLASS wc ={0};

   wc.hInstance          = hInst;
   wc.lpszClassName = "wnd_prueba";
   wc.lpfnWndProc    = GestWndPrueba;
   wc.style                 = CS_VREDRAW | CS_HREDRAW;
   wc.hCursor            = LoadCursor(NULL, IDC_ARROW);
   wc.hbrBackground  = (HBRUSH)GetStockObject(WHITE_BRUSH);

   if (!RegisterClass(&wc)) {
    MessageBox(NULL, "No puedo registar el tipo de ventana", "Error", MB_ICONSTOP);
      return 1;
   }

   hWnd = CreateWindow("wnd_prueba", "Ventana de prueba",
                       WS_OVERLAPPEDWINDOW,
                       CW_USEDEFAULT, CW_USEDEFAULT,
                       CW_USEDEFAULT, CW_USEDEFAULT,
                       NULL, (HMENU)NULL, hInst, NULL);

   if (hWnd == NULL) {
    MessageBox(NULL, "No puedo crear la ventana",  "Error", MB_ICONSTOP);
      return 1;
   }

   ShowWindow(hWnd, SW_SHOW);
   UpdateWindow(hWnd);

   while (GetMessage(&msg, (HWND)NULL, 0, 0)) {
    TranslateMessage(&msg);
      DispatchMessage(&msg);
   }

   return (msg.wParam);
}

LRESULT CALLBACK GestWndPrueba(HWND hWnd, UINT messg, WPARAM wParam, LPARAM lParam)
{
RECT rc;
PAINTSTRUCT ps;

switch(messg) {
    case WM_PAINT:
      BeginPaint(hWnd, &ps);
         GetClientRect(hWnd, &rc);
         DrawText(ps.hdc, "Hola mundo", -1, &rc, DT_CENTER|DT_VCENTER|DT_SINGLELINE);
         EndPaint(hWnd,  &ps);
         break;

      case WM_DESTROY:
      PostQuitMessage(0);
         break;
   }
   return DefWindowProc(hWnd,messg,wParam,lParam);
}


como veis... en windows hace falta algo más que un printf para hacer una sencilla aplicación. En linux, si programamos en modo gráfico (léase gtk, kde...) necesitaremos más de 4 líneas para crear una simple ventana; sin embargo, disponemos de muchas más funciones, clases y herramientas que nos ayudan y simplifican la vida a la hora de crear una aplicación real.

Una vez que se comprendan cuatro nociones sobre el entorno en el que programamos, no es difícil, sólo es cuestión de ponerse.

P.D.- El ejemplo de windos está hecho con el API Win32 (sin mfc, owl...)

Un saludo
Título: ...Diferencias C bajo Linux/C bajo Windows(C Basico)
Publicado por: jirho en 27 de Abril de 2004, 11:14:30 pm
... :oops: me refiero a C amigo... :oops:
Título: ...Diferencias C bajo Linux/C bajo Windows(C Basico)
Publicado por: Dabo en 28 de Abril de 2004, 12:23:39 am
muy bien ALP, :lol:  tranquilo jirho que yo tambien a veces me lio un poco  :wink:

mola  8)
Título: ...Diferencias C bajo Linux/C bajo Windows(C Basico)
Publicado por: Pablosfor en 14 de Agosto de 2005, 04:30:09 pm
Hola Gente!

Disculpen mi ignorancia, pero no se cómo hacer dos cosas en C bajo Linux, que seguramente son una pavada...

1)  :oops: El equivalente a "clrscr()" en linux, ¿Cuál es? ¿En que biblioteca está? Tengo muchos programas en C base Windows que usan esa función y para utilizarlos en Linux les debo modificar todo el menu  :cry: !

2) Me bajé un tutorial en el que se explica como usar funciones de x11 para trabajar en modo gráfico. El punto es que si bien las busqué en el man y figuran, no me dice qué librería tengo que incluir para usarlas. Como se habla por algún lado de xlib, hice un "#include <xlib.h>" pero me dice que no la encuentra... ¿Tienen idea qué librería debería agregar?

Bueno, desde ya, sólo por dedicar atención para leer el mensaje, muchas gracias!
Título: ...Diferencias C bajo Linux/C bajo Windows(C Basico)
Publicado por: jirho en 15 de Agosto de 2005, 08:55:23 pm
...lo que se hay dos formas, una con comandos de bajo nivel(pero ahora no recuerdo; si las necesitas luego te las dijo), y la otra es hacer llamado del sistemas (system("clear");)...
Título: ...Diferencias C bajo Linux/C bajo Windows(C Basico)
Publicado por: Pablosfor en 17 de Agosto de 2005, 03:17:12 am
Gracias Jirho! Hoy mismo lo pruebo. (Ya es la segunda que me sacás de apuros!) Gracias!
Título: ...Diferencias C bajo Linux/C bajo Windows(C Basico)
Publicado por: jirho en 22 de Agosto de 2005, 10:38:32 pm
...bueno, solo que para windows es system("cls")... :wink: ...