Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: alpachino98 en 9 Febrero 2019, 14:02 pm



Título: Ejecutar comando en C++ sin system()
Publicado por: alpachino98 en 9 Febrero 2019, 14:02 pm
Hola, quisiera saber como ejecutar un comando en un terminal sin usar system(), ya que según tengo entendido es una llamada al sistema operativo y no es una buena practica. Quisiera saber como se hace tanto en POSIX como en windows. Como ultima duda, aunque no tenga nada que ver,  me gustaría saber cuantos hilos te permiten los SO usar como máximo o partir de cuantos hilos deje de ser contraproducente. Gracias.


Título: Re: Ejecutar comando en C++ sin system()
Publicado por: srWhiteSkull en 9 Febrero 2019, 23:06 pm
Normalmente no se tira de llamadas a comandos internos del sistema, queda feo, y se recurre al api, sea el sistema que sea. Por ejemplo para linux tienes la función syscall http://manpages.ubuntu.com/manpages/bionic/es/man2/intro.2.html


Título: Re: Ejecutar comando en C++ sin system()
Publicado por: digimikeh en 10 Febrero 2019, 00:47 am
Yo entiendo que queda feo, pero es práctico, a mi no me quedó mas remedio que recurrir a ncurses y al System...   es decir, como ultimo recurso, que mas da?... en el amor, la guerra y la programación todo se vale  ;D


Título: Re: Ejecutar comando en C++ sin system()
Publicado por: srWhiteSkull en 10 Febrero 2019, 01:15 am
Es inseguro, puede darte problemas, etc... es feo, y claro, puedes hacerlo así para salir del paso, porque no tienes tiempo para repasar la documentación, etc... pero eso cada uno como lo vea  :-\


Título: Re: Ejecutar comando en C++ sin system()
Publicado por: ThunderCls en 11 Febrero 2019, 22:58 pm
1- Como te han dicho antes el uso de system() no es recomendado. La funcion system() lo que hace es crear una instancia de la consola de comandos de windows y pasar por parametro la cadena que pasas al llamarla para ser ejecutado como un comando mas del sistema operativo. Todos los motivos que te ha dado srWhiteSkull  son validos.

2- En cuanto a windows, cada aplicacion podria crear hasta 2000 hilos (con un tamaño de pila estandar). El tamaño de pila estandard es de 1MB por cada hilo, asi que si tienes 2000 hilos tienes los 2GB de espacio de direcciones permitidos por windows para cada aplicacion user-mode. En cuanto a linux puedes leer por aqui:
https://stackoverflow.com/questions/344203/maximum-number-of-threads-per-process-in-linux

Saludos