Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Oblivi0n en 28 Enero 2011, 22:09 pm



Título: Programacion API linux
Publicado por: 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.


Título: Re: Programacion API linux
Publicado por: RyogiShiki en 28 Enero 2011, 23:16 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"


Título: Re: Programacion API linux
Publicado por: Oblivi0n en 28 Enero 2011, 23:35 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!


Título: Re: Programacion API linux
Publicado por: 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.


Título: Re: Programacion API linux
Publicado por: RyogiShiki en 6 Febrero 2011, 16:06 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:

Citar
    GNU/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


Título: Re: Programacion API linux
Publicado por: erhey en 6 Febrero 2011, 16:29 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.

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.



Título: Re: Programacion API linux
Publicado por: RyogiShiki en 6 Febrero 2011, 19:03 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.


Título: Re: Programacion API linux
Publicado por: nosoqui en 6 Febrero 2011, 19:29 pm
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 !


Título: Re: Programacion API linux
Publicado por: Foxy Rider en 6 Febrero 2011, 22:34 pm
Citar
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?.

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.


Título: Re: Programacion API linux
Publicado por: erhey en 7 Febrero 2011, 20:42 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  :)



Título: Re: Programacion API linux
Publicado por: joe2011 en 1 Marzo 2014, 21:43 pm
Hola, amigo

Yo estoy siguiendo el siguiente manual
http://es.scribd.com/doc/182307480/Programacion-en-Linux-Kurt-Wall-pdf (http://es.scribd.com/doc/182307480/Programacion-en-Linux-Kurt-Wall-pdf)

Complementado con otro del mismo autor de Programación en Linux, pero ese lo tengo original. Este último complementa el anterior.

Respecto al primero tengo los ejemplos hechos hasta el capítulo 10, menos los 2 primeros capítulos que ya me los sabía (gcc y make) así que si te decides y tienes dudas en esos capítulos ya sabes donde preguntar.

Un saludo.


Título: Re: Programacion API linux
Publicado por: nolasco281 en 6 Marzo 2014, 07:49 am
Gracias por el enlace joe2011 me dare mi tiempo para leermelo saludos.


Título: Re: Programacion API linux
Publicado por: dato000 en 6 Marzo 2014, 15:21 pm
Lo voy a dejar muy simple, pero es solo para verdaderos vikingos:

"Linux From Scratch"


Título: Re: Programacion API linux
Publicado por: joe2011 en 6 Marzo 2014, 21:45 pm
Gracias por el aporte. Lo completo un poco.

http://www.linuxfromscratch.org/lfs/read.html (http://www.linuxfromscratch.org/lfs/read.html)
http://www.escomposlinux.org/lfs-es/ (http://www.escomposlinux.org/lfs-es/)

Un saludo.