Output von QProcess auslesen
-
Jimmyanderson
- Beiträge: 10
- Registriert: 15. Mai 2010 22:50
Output von QProcess auslesen
Hallo Leute,
ich kämpfe grade damit, den Output den ein QProcess ausgibt auszulesen.
"myProcess->execute("pgrep gst-launch-0.10");"
Bei diesen Befehl werden insgesamt 4 Zahlen ausgeben, die würde ich gerne in einen String speichern.Danke schon mal für die Antworten.
ich kämpfe grade damit, den Output den ein QProcess ausgibt auszulesen.
"myProcess->execute("pgrep gst-launch-0.10");"
Bei diesen Befehl werden insgesamt 4 Zahlen ausgeben, die würde ich gerne in einen String speichern.Danke schon mal für die Antworten.
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Wie wäre es mit http://doc.trolltech.com/4.6/qprocess.html#details ?
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung
-
Jimmyanderson
- Beiträge: 10
- Registriert: 15. Mai 2010 22:50
Poste doch mal was du schon hast, und erklär was noch nicht geh.Jimmyanderson hat geschrieben:Hey
danke für die Antwort,aber irgendwie klappt es immer noch nicht.
Schau dir auch speziell waitForFinished() und readAll()/readAllStandardOutput() an.
Die Doku bringt unter "Synchronous Process API" ein Beispiel das du mit wenig Aufwand auf deine Anwendung umschneidern kannst.
-
Jimmyanderson
- Beiträge: 10
- Registriert: 15. Mai 2010 22:50
Ich will einen eigenen Mediacenter programmieren. Da ich Ubuntu nutze,dachte ich mir, dass ich Gstreamer für den Mediencenter benutzten werde. Also ich bin schon soweit bekommen, dass ich Musik abspielen kann,jedoch wenn ich das Programm schließe, läuft Gstreamer weiterhin im Hintergrund. Im Internet habe ich kein Befehl gefunden um Gestreamer zu pausieren bzw zu schließen.Daraufhin dachte ich mir ich beende den Prozess durch einen Befehl.Hoffe,dass ich ne grobe Übersicht gegeben habe^^ Quellcode sieht dann folgender massen aus:
// myThread.cpp
Thread::Thread()
{
player = new QProcess;
}
void Thread::run()
{
player->execute("gst-launch-0.10 playbin uri=file:///home/sebastian/Desktop/test.mp3");
}
void Thread::stop()
{
QProcess killer;
killer.start("pgrep gst-launch-0.10");
qDebug() << killer.readAllStandardOutput();
}
Ich musste für mein Programm einen Thread benutzten und Thread::stop ist sozusagen mein Ansatz gewesen,wie die Lösung für mein Problem aussehen könnte. Jedoch klappte dies nicht.
//music.cpp
Music::Music(QWidget *parent) : QWidget(parent)
{
play = new QPushButton("Play");
layout = new QHBoxLayout;
connect(play,SIGNAL(clicked()),this,SLOT(playMyMusic()));
layout->addWidget(play);
setLayout(layout);
}
void Music::playMyMusic()
{
if(player.isRunning())
player.stop();
else
player.start();
}
und hier ist dann eben zum Test ein Fenster mit einem Playbutton, der eben die Musik abspielen bzw abschalten soll.
// myThread.cpp
Thread::Thread()
{
player = new QProcess;
}
void Thread::run()
{
player->execute("gst-launch-0.10 playbin uri=file:///home/sebastian/Desktop/test.mp3");
}
void Thread::stop()
{
QProcess killer;
killer.start("pgrep gst-launch-0.10");
qDebug() << killer.readAllStandardOutput();
}
Ich musste für mein Programm einen Thread benutzten und Thread::stop ist sozusagen mein Ansatz gewesen,wie die Lösung für mein Problem aussehen könnte. Jedoch klappte dies nicht.
//music.cpp
Music::Music(QWidget *parent) : QWidget(parent)
{
play = new QPushButton("Play");
layout = new QHBoxLayout;
connect(play,SIGNAL(clicked()),this,SLOT(playMyMusic()));
layout->addWidget(play);
setLayout(layout);
}
void Music::playMyMusic()
{
if(player.isRunning())
player.stop();
else
player.start();
}
und hier ist dann eben zum Test ein Fenster mit einem Playbutton, der eben die Musik abspielen bzw abschalten soll.
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
-
Jimmyanderson
- Beiträge: 10
- Registriert: 15. Mai 2010 22:50
-
Jimmyanderson
- Beiträge: 10
- Registriert: 15. Mai 2010 22:50