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

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ¿Cómo crear procesos hijos en C para Windows?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ¿Cómo crear procesos hijos en C para Windows?  (Leído 5,823 veces)
Yoel Alejandro

Desconectado Desconectado

Mensajes: 254



Ver Perfil WWW
¿Cómo crear procesos hijos en C para Windows?
« en: 22 Marzo 2014, 22:55 pm »

Una pregunta a la comunidad. Como sabemos, el estándar POSIX provee un conjunto de métodos para interacción con el sistema operativo (crear o ejecutar procesos, conocer estados y permisos de ficheros, etc). En implementaciones de C para Linux (e UNIX en general) estas funciones están definidas en <unistd.h>. Y sabemos también que Windows es el campeón en desobedecer los estándares.

Mi pregunta es cómo hacer algo similar, por ejemplo crear un proceso hijo con fork(), a través de un programa elaborado en C para el sistema operativo Windows. Y así por ejemplo crear demonios personalizados para tareas de sistema. O también podría ser crear tuberías, comunicar procesos, etc.

La distribucion MinGW para Windows contempla algunas funciones de este tipo, por ejemplo en <dirent.h> está la función de leer directorios readdir(), y en <unistd.h> tenemos chdir() para cambiarnos de directorio. Pero no vi nada de procesos hijos, tuberías, etc.


En línea

Saludos, Yoel.
P.D..-   Para mayores dudas, puedes enviarme un mensaje personal (M.P.)
amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: ¿Cómo crear procesos hijos en C para Windows?
« Respuesta #1 en: 23 Marzo 2014, 00:29 am »

Todo eso está definido en las Windows API. De hecho cualquier función que veas relevante del sistema estará definida en las windows API.

El tema de crear procesos en cuestión, buscando en google "createprocess windows api" encontré la página de referencia:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms682425%28v=vs.85%29.aspx

¿Esperabas una función tan sencilla como la de fork? Amigo mío, Microsoft es un artista en el arte de complicarse la vida, todo lo que veas desarrollado por él suele estar complicado hasta el exceso.

Eso sí, aunque se complica mucho sus herramientas siempre son las mejores en Windows. No vas a encontrar ninguna que haga más que las suyas.

Por cierto, si te da igual usar hilos o procesos. Quizás te interesa C++11, es el estándar del 2011 de C++ y una de sus novedades son las librerías de hilos:
http://en.cppreference.com/w/cpp/thread

De lo mejor que vas a encontrar en programación concurrente y te funcionará tanto en linux como en windows (ya que forma parte de la librería estándar).


En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
Yoel Alejandro

Desconectado Desconectado

Mensajes: 254



Ver Perfil WWW
Re: ¿Cómo crear procesos hijos en C para Windows?
« Respuesta #2 en: 23 Marzo 2014, 00:59 am »

Windows API's: ............ Ya lo sabía: Windows es el campeón en desobedecer los estándares.

O como bien dices: Microsoft es un artista en el arte de complicarse la vida, todo lo que veas desarrollado por él suele estar complicado hasta el exceso.

Mejor digo chau al tema y me decido a seguir programando para Linux y otros que respeten POSIX, jajaja.
En línea

Saludos, Yoel.
P.D..-   Para mayores dudas, puedes enviarme un mensaje personal (M.P.)
amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: ¿Cómo crear procesos hijos en C para Windows?
« Respuesta #3 en: 23 Marzo 2014, 01:30 am »

Yo no me confiaría tanto del POSIX. Para C son estupendas pero el futuro de C++ va a ser las nuevas clases thread del estandar C++11.

Digo futuro porque son nuevas y aún tienen que madurar un poco. Pero vamos a mí personalmente me parecen de lo mejor que se ha hecho:
Código
  1. void hilo(int a,int b)
  2. {
  3.     cout<<a<<b<<endl;
  4. }
  5. void otro_hilo(double a,float b,float c)
  6. {
  7.   a += b/c;
  8.   cout<<a<<endl;
  9. }
  10.  
  11. int main()
  12. {
  13.     thread t1(hilo,1,2); // llamo a la funcion hilo con los argumentos 1 y 2
  14.     thread t2(otro_hilo,3.2,12.5,6.1); // llamo a la funcion otro_hilo con los argumentos 3.2, 12.5 y 6.1
  15.     t1.join();
  16.     t2.join();
  17. }

A ver como haces eso en POSIX sin tirar de casts y de hacerte estructuras cada 2x3 ^^

Y en el tema de argumentos por referencia o llamadas de metodos de objetos ya ni hablamos xD.
« Última modificación: 23 Marzo 2014, 01:32 am por amchacon » En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Como crear un wpi para windows??
Windows
Bender-Deicide 4 9,557 Último mensaje 8 Octubre 2011, 21:22 pm
por Bender-Deicide
Aprende cómo identificar procesos maliciosos en Windows
Noticias
wolfbcn 0 1,843 Último mensaje 16 Febrero 2014, 18:02 pm
por wolfbcn
Cómo crear un USB o DVD de instalación para Windows 8.1
Noticias
wolfbcn 0 1,395 Último mensaje 10 Noviembre 2014, 18:31 pm
por wolfbcn
Matar dos procesos hijos en C
Programación C/C++
Katerina Dobreva 0 2,154 Último mensaje 2 Diciembre 2016, 20:16 pm
por Katerina Dobreva
Cómo evitar que tus hijos usen la aplicación de la calculadora falsa para ...
Noticias
wolfbcn 0 963 Último mensaje 7 Octubre 2018, 02:03 am
por wolfbcn
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines