Anzeige:
Ergebnis 1 bis 8 von 8

Thema: [KDE] Module eingehangen?

  1. #1
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255

    [KDE] Module eingehangen?

    Ich habe zwei Fragen zu meiner KDE-3.2.*/QT Anwendung
    Ich suche im Moment eine Möglichkeit herauszufinden welche Module im Moment eingehangen sind. Also:
    Code:
    cat /proc/modules | grep ^raw1394
    Jedoch dürfte dies wohl keine Optimale Lösung sein weil so viel ich weis dies File(modules) nicht überall bei Linux Distributions an gleicher Position liegt.
    Zum zweiten wie kann ich bei der Binär Datei dvgrab (kino.schirmacher.de) eine vernünftige Contolle erstellen. Zurzeit verwende ich diesen Code der mir aber einen Crasch verurssacht.
    Code:
    KProcess proc( parent, name );
    Parameter = "dvgrab";
    // Parameter += "--interactive";
    Parameter += "--help";
    proc << ( Parameter );
    if ( proc.isRunning() ) {
       kdDebug() << "Running:" << endl;
    }
    Vor allem Blicke ich Moment noch nicht so ganz wie ich ein pid File aufmachen kann damit ich nicht andauernd einen neuen Prozess starte was mir schon passiert ist Wenn jemand ein Tutorial kennt wo ich mir den Aufbau etwas genauer ansehen kann wäre mir schon sehr geholfen
    gruss undefined

  2. #2
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    Das KProzess Problem habe ich jetzt gelöst jedoch gefällt mir das immer noch nicht so ganz mit dem Befehl. Würde mich brennend Interessieren wie man das in KDE besser Lösen kann.
    PHP-Code:
    #ifndef KDVKONTROLLER_H
    #define KDVKONTROLLER_H

    #include <qstringlist.h>
    #include <kprocess.h>

    class KDVKontroller : public KProcess
    {
            
    Q_OBJECT
    public:
            
    enum KONTROLL REWIND 1STEPBACK 2PLAY 3STOP 4RECORD 5STEPFRONT 6FORWARD };
            
    KProcess Proc;
            
    QStringList Parameter;
            
    KDVKontroller(QObject *parent 0, const char *name 0);
            ~
    KDVKontroller();
    };
    #endif 
    cpp:
    PHP-Code:
    #include "kdvkontroller.h"

    KDVKontroller::KDVKontroller(QObject *parent, const char *name)
                    : 
    Procparent name )
    {
            
    Proc.setUseShellTRUE );
            
    char ShellCo[34] = "cat /proc/modules | grep ^raw1394";
            
    Proc << ShellCo;
            if ( 
    Proc.start() )
                
    Proc.clearArguments();
    }

    KDVKontroller::~KDVKontroller()
    {}


    #include "kdvkontroller.moc" 

  3. #3
    Registrierter Benutzer Avatar von tuxipuxi
    Registriert seit
    30.08.2002
    Beiträge
    667
    Ich bin mir sehr sicher, dass KDE für das Problem keine Klasse o.ä. bereitstellt.
    Wenn du wissen willst ob es eine bessere Lösung gibt, musst du mal nach einem KDE kcontrol module googlen, vielleicht hat jemand ja schonmal ein ähnliches Problem gehabt.

    Michael.

  4. #4
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    /proc/modules verhält sich ansich wie eine Datei, die man nur lesen kann.
    Du könntest sie also ziemlich sicher mit QFile öffnen und auslesen.

    Noch was zu deinem Code: es ist dabei vöölig unnötig, dass deine Klasse von KProcess abgeleitet ist, wenn sie dann noch eine KProcess Instanz beinhaltet.

    Einfach von QObject hätte glaube ich gereicht.

    Kannst du kurz erklären, was du mit pid file meinst?

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  5. #5
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    Zitat Zitat von anda_skoa
    Kannst du kurz erklären, was du mit pid file meinst?
    Ist jetzt nicht dein Ernst oder?
    Wenn du einen MySQL oder Apache Server auf deinem System am laufen hast müstest du deren Pid File unter /var/run/* finden.
    Im Pidfile wird die momentane Prozess ID geschrieben weil man sonst wenig Möglichkeit hat herauszufinden wann und wo welcher Prozess am Laufen ist und von welchen User er gestartet wurde. Siehe auch /etc/init.d rcstatus. KProzess gibt mir zwar die momentane ID zurück aber keinerlei Informationen über den Prozess. Daher Brauche ich das Pidfile
    Geändert von undefined (23-07-2004 um 09:04 Uhr)

  6. #6
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Zitat Zitat von undefined
    Ist jetzt nicht dein Ernst oder?
    Doch, der Zusammenhang war mir nämlich nicht klar.

    Wenn du einen MySQL oder Apache Server auf deinem System am laufen hast müstest du deren Pid File unter /var/run/* finden.
    Soweit bekannt

    KProzess gibt mir zwar die momentane ID zurück aber keinerlei Informationen über den Prozess. Daher Brauche ich das Pidfile
    Welcher PID File?
    Startest du leicht einen Systemdaemon der ein PID File schreibt?

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  7. #7
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    Hat sich mittlerweile erledigt. Habe mir selbst eine Routine geschrieben das wenn die Anwendung geschlossen wird der Prozess gekillt wird.
    PHP-Code:
    bool KDVKontroller::writepidint id )
    {
            
    QFile PidfilePIDFILE );
            if ( ! 
    Pidfile.exists() ) {
                    
    QTextStream stream( &Pidfile );
                    if ( 
    Pidfile.openIO_WriteOnly ) ) {
                            
    stream << id;
                            return 
    TRUE;
                    } else {
                            return 
    FALSE;
                    }
                    
    Pidfile.close();
            } else {
                    return 
    TRUE;
            }

    PHP-Code:
    bool KDVKontroller::dvcontactionQString com bool why )
    {
            
    bool St;
            
    Proc.clearArguments();

            if ( 
    why == TRUE )
                    
    Proc << DVCONTBIN << "play" << "trickplay" << com;
            else
                    
    Proc << DVCONTBIN << com << "verbose";

            if ( 
    Proc.start() )
                    
    St Proc.isRunning();
            else
                    
    St FALSE;

            
    writepidProc.pid() );
            
    Proc.clearArguments();
            return 
    St;


  8. #8
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Zitat Zitat von undefined
    Hat sich mittlerweile erledigt. Habe mir selbst eine Routine geschrieben das wenn die Anwendung geschlossen wird der Prozess gekillt wird.
    Vielleicht könntest du trotzdem noch erklären, warum du ein PID file brauchst.
    Kommunizierst du mit einem weiteren externen Programm, dass diese File braucht?

    Btw:

    Code:
    if (why)
    Code:
    if (why == true)
    ist bischen redundant

    Und es ist vorteilhaft, sich gleich am Anfang anzugewöhnen, Klassenparameter über Referenzen zu übergeben, nicht alle Klassen haben einen Copy-Constructor und nicht immer ist wie bei QString der Inhalt geshared und muss dann kopiert werden.

    Also
    Code:
    void foo(const QString& cmd)
    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •