Programacion API linux

Iniciado por Oblivi0n, 28 Enero 2011, 22:09 PM

0 Miembros y 1 Visitante están viendo este tema.

Oblivi0n

Buenas gente.

Me estoy iniciando a usar Linux (Xubuntu concretamente), despues de un largo tiempo usando windows (4 años), y la duda que tenia es, ¿Que libros me recomendais para usar la API de linux?

Soy programador de C y normalmente he programado con la API de windows, ¿Es mas facil?, ¿Mas compleja?

Saludo y gracias!

P.D: Pregunto aqui porque en Google encuentro todo tipo de documentacion, asique queria saber como hicieron ustedes para empezar a programar en Linux.

RyogiShiki

#1
Cita de: Oblivi0n en 28 Enero 2011, 22:09 PM
Buenas gente.

Me estoy iniciando a usar Linux (Xubuntu concretamente), despues de un largo tiempo usando windows (4 años), y la duda que tenia es, ¿Que libros me recomendais para usar la API de linux?

Soy programador de C y normalmente he programado con la API de windows, ¿Es mas facil?, ¿Mas compleja?

Saludo y gracias!

P.D: Pregunto aqui porque en Google encuentro todo tipo de documentacion, asique queria saber como hicieron ustedes para empezar a programar en Linux.


La verdad es que tal cosa como "Linux API" en realidad no existe, lo que existees la "Linux Kernel API" que seguramente es muy diferente de lo que esperas, y se usa myormente para operaciones a bajo nivel e integración con el Kernel, Recuerda que Linux es el Nucleo y GNU es la implementación de una plataforma sobre ese nucleo.

Si quieres realizar cosas como las que haces en la API de Windows te recomiendo que uses Qt y gtkmm seguramente con estos no heches de menos ninguna funcionalidad que te ofrece el API de Windows

Claro esos a menos que quieras programar cosas como drivers de dispositivos o extender funcionalidades del kernel mediante módulos que es para lo que esta hecha la "Linux Kernel API"


Oblivi0n

Cita de: gankutsuo en 28 Enero 2011, 23:16 PM

La verdad es que tal cosa como "Linux API" en realidad no existe, lo que existees la "Linux Kernel API" que seguramente es muy diferente de lo que esperas, y se usa myormente para operaciones a bajo nivel e integración con el Kernel, Recuerda que Linux es el Nucleo y GNU es la implementación de una plataforma sobre ese nucleo.

Si quieres realizar cosas como las que haces en la API de Windows te recomiendo que uses Qt y gtkmm seguramente con estos no heches de menos ninguna funcionalidad que te ofrece el API de Windows

Claro esos a menos que quieras programar cosas como drivers de dispositivos o extender funcionalidades del kernel mediante módulos que es para lo que esta hecha la "Linux Kernel API"


Tomo nota, muchisimas gracias!

erhey

La API de linux es POSIX, un standar en todos los tipo unix. Incluso ciertas versiones de windows la traen (aunque creo que internamente, las funciones se traducen a win32, no entra directamente al ejecutivo de windows).

Un saludo.

RyogiShiki

Cita de: erhey en  6 Febrero 2011, 15:45 PM
La API de linux es POSIX, un standar en todos los tipo unix. Incluso ciertas versiones de windows la traen (aunque creo que internamente, las funciones se traducen a win32, no entra directamente al ejecutivo de windows).

Un saludo.

Y otra vez la burra al trigo, y no se cuantes veces repita esto en este foro. Debemos tener siempre en cuenta la diferencia entre Linux y Sistemas Operativos, citande de Wikipedia POSIX es compatible con los siguientes Sistemas:

CitarGNU/Linux
    A/UX
    AIX
    BSD/OS
    HP-UX
    INTEGRITY
    IRIX
    LynxOS
    Mac OS X v10.5 en Procesadores Intel.
    MINIX
    MPE/iX
    QNX (IEEE Std. 1003.13-2003 PSE52;
    RTEMS (POSIX 1003.1-2003 Profile 52)
    Solaris
        OpenSolaris
    UnixWare
    velOSity
    VxWorks (IEEE Std. 1003.13-2003 PSE52;
    Windows NT (y posteriores)

En ningún momento es compatible con el Kernel el Nucleo, y no funciona para controlar el Kernel que es "Linux", el hilo original pregunta acerca del API de Linux. debemos hacer la diferencia, POSIX no es el API de Linux. Puede considerarse como el API  de sistemas GNU/Linux

Saludos


erhey

#5
Cita de: gankutsuo en  6 Febrero 2011, 16:06 PM
Y otra vez la burra al trigo, y no se cuantes veces repita esto en este foro. Debemos tener siempre en cuenta la diferencia entre Linux y Sistemas Operativos, citande de Wikipedia POSIX es compatible con los siguientes Sistemas:

que mas da? la API de Linux es POSIX, porque la trae implementada, al igual que la de UNIX es POSIX, no entiendo la diferencia que quieres hacer ver.

Cita de: gankutsuo en  6 Febrero 2011, 16:06 PM
En ningún momento es compatible con el Kernel el Nucleo, y no funciona para controlar el Kernel que es "Linux", el hilo original pregunta acerca del API de Linux. debemos hacer la diferencia, POSIX no es el API de Linux. Puede considerarse como el API  de sistemas GNU/Linux

Saludos

Es que no te entiendo, son llamadas al sistema, que importa el nucleo?. Es que con la win32 controlas el Kernel? no, no?. Para eso tienes WDM.


Edito.
Vale, te pillo, tu dices que linux es estrictamente el nucleo. Y por ese tecnicismo no le dices  que en las distribuciones que llevan linux hay una api standard llamada posix equivalente a la win32 no?.

Un saludo.


RyogiShiki

Cita de: erhey en  6 Febrero 2011, 16:29 PM

Edito.
Vale, te pillo, tu dices que linux es estrictamente el nucleo. Y por ese tecnicismo no le dices  que en las distribuciones que llevan linux hay una api standard llamada posix equivalente a la win32 no?.

Un saludo.

Ciertamente es eso! podrá ser un tecnicismo, pero es importante hacer la diferencia.


nosoqui

Ya que en linux, casi todo se trata como si fuesen archivos.... yo empezaría sabiendo como se usan las llamadas al sistema que se relacionan con estos directamente: open,read,write... luego con las llamadas que te dejan configurar la manera de recibir los datos y de dar ordenes a dispositivos, como ioctl.
Luego están las llamadas  relacionadas con los procesos, de las cuales considero las más importantes fork y exec
Y por ultimo, las llamadas relacionadas con la intercomunicación de procesos, las más comunes son los sockets(usados para la comunicación con internet), la memoria compartida(shmget,shmmat ..etc) ...
Y un un paso más avanzado podría nombrar lo relacionado con la sincronización de procesos que trabajan paralelamente en un mismo trabajo como los bloqueos y los semáforos(mutex)
Un saludo y suerte !

Foxy Rider

CitarVale, te pillo, tu dices que linux es estrictamente el nucleo. Y por ese tecnicismo no le dices  que en las distribuciones que llevan linux hay una api standard llamada posix equivalente a la win32 no?.

Yo diría que no es tan así ... Linux (Kernel) tiene una API interna que no tiene naada que ver con POSIX, pero a nivel userland disponés de las famosas syscalls que se definen en POSIX ... no llegan en sí a ser un equivalente, ya que la API de Windows contempla cosas como por ejemplo : interfaces gráficas, API para manejo de HTTP/FTP/etc (Wininet), manejo de imágenes (gdi), etc ... en los sistemas *nix hay proyectos que ofrecen eso (Respectivamente Xorg/Qt/Gtk, Curl, ImageMagick), pero no forman parte de POSIX ...

Saludos.

erhey

Cita de: vertex@Symphony en  6 Febrero 2011, 22:34 PM
Yo diría que no es tan así ... Linux (Kernel) tiene una API interna que no tiene naada que ver con POSIX, pero a nivel userland disponés de las famosas syscalls que se definen en POSIX ... no llegan en sí a ser un equivalente, ya que la API de Windows contempla cosas como por ejemplo : interfaces gráficas, API para manejo de HTTP/FTP/etc (Wininet), manejo de imágenes (gdi), etc ... en los sistemas *nix hay proyectos que ofrecen eso (Respectivamente Xorg/Qt/Gtk, Curl, ImageMagick), pero no forman parte de POSIX ...

Saludos.

Bueno, está claro que cada SO tiene sus particularidades, a lo que me referia simplemente, buscando hacer el simil entre Windows y *nix, es nombrar su API basica y standard, no distintos proyectos (aunque estos cubran parte de las necesidades no cubiertas por POSIX).

PD. cuando mire la parte que edite y vi 'equivalente', sabia que alguien me iba a decir algo  :)