PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : externe Programme unter C ausführen



Brain Fury
19-04-2007, 12:52
Wie kann ich aus einem C Programm ein externes Programm aufrufen?

Ich versuche grade mir ein GTK-Programm zu schreiben mitdem ich meinen Laptop Ausschalten/Neu starten/usw kann...

michael.sprick
19-04-2007, 13:03
eine Möglichkeit wäre die Funktion
int system(char*); aus stdlib.h... schau mal an der Konsole in "info system"

M.

Brain Fury
19-04-2007, 13:41
....you have to wait until the subprogram terminates before you can do anything else.
....

Kann ich das irgendwie umgehen? z.b. das COMMAND mit & aufrufen?

Und nochwas..
Ich bin absoluter C-Noob. Wie muss ich das in das Programm einbasteln?
Bis jetzt sieht der Code so aus:


........
void
on_ausschalten_clicked (GtkButton *button,
gpointer user_data)
{
gtk_main_quit();
}
......

vor das gtk_main_quit soll das shutdown programm

anda_skoa
19-04-2007, 14:09
Es gibt in glib sicher ein non-blocking exec oder ähnliches.

Ciao,
_

Brain Fury
19-04-2007, 14:19
ok das mit dem einbetten hab ich durch ausprobieren hinbekommen. Jetzt muss ich nur nochmal gucken, dass das nicht nacheinander abläuft.

jay-t
19-04-2007, 19:11
Wegen dem Blocken des Prozesses: fork() startet einen neuen Prozess der
unabhängig ist. Das Hauptprogramm läuft dann weiter.

Brain Fury
19-04-2007, 19:40
danke, is aber garnicht nötig.
Das funktioniert so wie es ist schon ganz wunderbar.
Falls sich das jemand angucken möchte:
http://www-public.rz.uni-duesseldorf.de/~jukip100/gtk-shutdown.tar.bz2

jeebee
19-04-2007, 21:13
ach, bei Interesse:
http://sourceforge.net/projects/syspanel
ich hab da auch mal ein GTK-Interface programmiert, welches benutzerdefinierte Befehle ausführen kann. (Befehle werden mit fork() ausgeführt).

anda_skoa
20-04-2007, 14:56
Nur noch eine Anmerkung zum Thema Shutdown.

Auf der xdg Mailinglist von freedesktop.org war kürzlich eine Diskussion über ein einheitliches D-Bus Interface für Shutdown, Reboot, Standby usw. inklusive Methoden um Shutdown/Reboot/Standby vorübergehend zu verhindern (zB um eine Operation sicher zu Ende zur bringen)

Ciao,
_

RapidMax
20-04-2007, 19:39
Auf der xdg Mailinglist von freedesktop.org war kürzlich eine Diskussion über ein einheitliches D-Bus Interface für Shutdown, Reboot, Standby usw. inklusive Methoden um Shutdown/Reboot/Standby vorübergehend zu verhindern (zB um eine Operation sicher zu Ende zur bringen)

Interessant. Und wie wird das mit den Rechten gelöst?

Gruss, Andy

anda_skoa
21-04-2007, 20:18
Das macht D-Bus, der läßt nur Methodenaufrufe zu, zu denen der Benutzer auch berechtig ist, zB weil er eine bestimmten Gruppe angehört.

Das Zielprogramm, also das dann die Befehle letztendlich ausführt, hat dann entsprechende Systemrechte, oder ruft seinerseits entsprechende Hilfprogramme auf.

Ciao,
_