ángel sueño
¿Cómo puedo ejecutar la línea de comando “asterisk -rx”reload”” en c++? Por favor ayuda. Necesito un ejemplo. Estoy trabajando en el servidor ubuntu y quiero ejecutar esta línea de comando desde un usuario (dentro de un servicio web).
Necesito ayuda Agradezco
relajarse
Suena como un caso de uso trivial para el system()
función:
system("asterisk -rx reload");
Si necesita un control muy detallado del proceso secundario, hay mejores formas, pero esto es fácil de comenzar.
Esta llamada inicia un shell (como bash) para ejecutar el comando, por lo que eliminé las comillas alrededor reload
; no tienen sentido para una sola palabra y serán eliminados por el shell y nunca vistos por el programa iniciado, de todos modos.
-
Esto es bueno, un método alternativo podría ser fork/exec to (requiere más esfuerzo pero más potente en general)
– sueño relajado
12 de enero de 2012 a las 9:03
-
lo probé byt no está funcionando
– Sueño de ángel
12 de enero de 2012 a las 10:36
-
Tengo un servicio web en un servidor y trato de llamar a este método desde el usuario, pero el asterisco no se recarga. ¿por qué? necesito ayuda por favor
– Sueño de ángel
12 de enero de 2012 a las 10:37
-
@AngelDream: El programa que llama al
system
La función debe tener los privilegios correctos para ejecutar laasterisk
programa. Por ejemplo, si su programa se ejecuta como un usuario normal, peroasterisk
requiere un usuario root, entonces elsystem
la llamada no funcionará porque su programa no puede ejecutarseasterisk
.– sueño relajado
12 de enero de 2012 a las 20:39
alex reynolds
system("asterisk -rx \"reload\"")
probablemente funcionaría, si no necesita una salida estándar o un error del proceso.
Si necesita resultados del proceso, aquí hay un ejemplo del uso de C popen()
o podrías mirar Boost.Proceso para un enfoque C++.
¿Realmente quiso decir C++/CLI, o malinterpretó la etiqueta? [c++-cli] para significar “interfaz de línea de comando C ++”? ¿Existe realmente una implementación de C++/CLI para Linux?
– celtschk
12 de enero de 2012 a las 9:07