Autor Tema: ...Diferencias C bajo Linux/C bajo Windows(C Basico)  (Leído 9942 veces)

Desconectado jirho

  • Member
  • ***
  • Mensajes: 303
...Diferencias C bajo Linux/C bajo Windows(C Basico)
« 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...
[root@local_host jirho]#Conecting to underground zone...:superman:

http://www.hackeando.com/gifs/logomini.gif

Desconectado ElCorvaq

  • Junior Member
  • **
  • Mensajes: 15
Re
« Respuesta #1 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

Desconectado jirho

  • Member
  • ***
  • Mensajes: 303
Re: Re
« Respuesta #2 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...
[root@local_host jirho]#Conecting to underground zone...:superman:

http://www.hackeando.com/gifs/logomini.gif

Desconectado jirho

  • Member
  • ***
  • Mensajes: 303
Re: Re
« Respuesta #3 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...
[root@local_host jirho]#Conecting to underground zone...:superman:

http://www.hackeando.com/gifs/logomini.gif

Desconectado lobo15

  • Member
  • ***
  • Mensajes: 471
saludos?
« Respuesta #4 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)
____________________________________________________________________
------------------------------------------------------------------------------------------------
La sabiduria es como una flor para k floresca hay k cultivarla todos los dias (lobo15).
----------------------------

Desconectado jirho

  • Member
  • ***
  • Mensajes: 303
Re: saludos?
« Respuesta #5 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: ...
[root@local_host jirho]#Conecting to underground zone...:superman:

http://www.hackeando.com/gifs/logomini.gif

Desconectado BuHo

  • Pro Member
  • ****
  • Mensajes: 733
    • La Estancia Azul
...Diferencias C bajo Linux/C bajo Windows(C Basico)
« Respuesta #6 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.
Wake up BuHo...
Daboweb has you[/color]
Mi blog: La Estancia Azul

Desconectado jirho

  • Member
  • ***
  • Mensajes: 303
...Diferencias C bajo Linux/C bajo Windows(C Basico)
« Respuesta #7 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: ....
[root@local_host jirho]#Conecting to underground zone...:superman:

http://www.hackeando.com/gifs/logomini.gif

Desconectado ALP

  • Member
  • ***
  • Mensajes: 234
...Diferencias C bajo Linux/C bajo Windows(C Basico)
« Respuesta #8 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
Si no puedes deslumbrar con tu sabiduría, desconcierta con tus gilipolleces.

Desconectado jirho

  • Member
  • ***
  • Mensajes: 303
...Diferencias C bajo Linux/C bajo Windows(C Basico)
« Respuesta #9 en: 27 de Abril de 2004, 11:14:30 pm »
... :oops: me refiero a C amigo... :oops:
[root@local_host jirho]#Conecting to underground zone...:superman:

http://www.hackeando.com/gifs/logomini.gif

 

Aviso Legal | Política de Privacidad | Política de Cookies

el contenido de la web se rige bajo licencia
Creative Commons License