Tambien puedes publicar tus dudas en:

Autor Tema: Saber programa en ejecución (ver explicación)  (Leído 1291 veces)

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

Desconectado guevo056

  • Me das tu IP?
  • *
  • Mensajes: 50
    • Ver Perfil
Saber programa en ejecución (ver explicación)
« en: 15 Mayo 2010, 09:33:36 am »
Buenas

Estoy desarrollando mi primera librería. Es un proyecto pequeño porque estoy aprendiendo. Estoy creando una librería para  gestionar logs en otros programas.

Bueno en uno de los procedimiento definidos dentro de la librería me gustaría el nombre de la aplicación que se esta ejecutando para poder crear un fichero con el mismo nombre.

Gracias de antemano.

Desconectado guevo056

  • Me das tu IP?
  • *
  • Mensajes: 50
    • Ver Perfil
Re: Saber programa en ejecución (ver explicación)
« Respuesta #1 en: 02 Junio 2010, 07:53:56 pm »
Es decir, dentro de un programa.

ejecutar un sytem("x");


para poder sacar por pantalla el nombre del programa en ejecución.

Desconectado JaAViEr

  • ¡ Programming the world !
  • Colaborador
  • ****
  • Mensajes: 8,145
  • No te olvides visitar http://www.rootcodes.com No te olvides visitar http://www.rootcodes.com No te olvides visitar http://www.rootcodes.com !!!!!!!!!!!!!!
    • 0x5d
    • Ver Perfil
    • Root Codes
Re: Saber programa en ejecución (ver explicación)
« Respuesta #2 en: 03 Junio 2010, 01:14:29 am »
Si quieres ver los procesos en ejecución, Tasklist es tu respuesta.
Porfavor no hagas doble post ;D

Saludos.
¡ SIGUEME EN TWITTER -> @0X5D !

Desconectado guevo056

  • Me das tu IP?
  • *
  • Mensajes: 50
    • Ver Perfil
Re: Saber programa en ejecución (ver explicación)
« Respuesta #3 en: 03 Junio 2010, 06:53:58 pm »
Me auto-respondo.

Lo que yo pedía es saber el código que hay que poner dentro de un programa para que estando este en ejecución saber el nombre del programa en ejecución.  Dado que este código lo estoy metiendo en una librería creo que es interesante porque el nombre del programa es desconocido para el creador de la libreria.

Me autocontesto ya que he conseguido la solución:
Código: C++
  1. void borrar_fichero()
  2. {
  3.         if( remove( "temp.txt" ) == -1 )
  4.         {
  5.                 perror( "¡¡ Error borrando el fichero !!" );
  6.         }
  7.         else
  8.                 puts( "Fichero borrado correctamente." );
  9. }
  10.  
  11. bool busqueda_fichero(string origen, string destino, int secuencia)
  12. {
  13.         ifstream fin;
  14.         ofstream fout;
  15.         string s;
  16.        
  17.         fout.open(destino.c_str());
  18.         fin.open(origen.c_str());
  19.        
  20.         if (fin.fail()) // Problema al abrir el fichero con los datos
  21.     {
  22.         cout << "Fichero de origen no existe.\n";
  23.         return false;
  24.      }
  25.        
  26.          getline(fin,s,' '); // Lee solo una palabra, no una linea
  27.      while (!fin.eof())
  28.      {
  29.         cout << s << endl;
  30.         if(atoi(s.c_str())==secuencia) // Convertir el string en int para poder compararlo
  31.         {
  32.                 getline(fin,s,' ');
  33.                 getline(fin,s,' ');
  34.                 getline(fin,s,' ');
  35.                 getline(fin,s,' ');
  36.                 getline(fin,s,' ');
  37.                 getline(fin,s,' ');
  38.                 break;
  39.         }
  40.         getline(fin,s,' ');
  41.      }
  42.        
  43.          s[0]=' ';
  44.      s[1]=' ';
  45.      
  46.      fout << s;
  47.      
  48.      fout.close();
  49.      fin.close();
  50.      
  51.      borrar_fichero(); // Borramos fichero temporal
  52.      cout << "\nDone.\n";
  53.      return true;      
  54. }
  55. void pasar_cadena(string mensaje)
  56. {
  57.         int valor;
  58.        
  59.         valor=getpid();
  60.         cout << "PID IMPORTANTE " << valor << endl;
  61.         system("ps >> temp.txt");  // Guardo resultado en un fichero temporal
  62.        
  63.         bool test=busqueda_fichero("temp.txt", "destino.txt", valor);
  64.         //cout << mensaje << endl;
  65. }

Por si ha alguien le sirve.

En la solución el nombre del programa lo escribe en un fichero llamado destino.txt. Es trivial sacarlo por pantalla.

Funciona en Linux y MAC.