Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Beneroth

Alter Hase

  • »Beneroth« ist der Autor dieses Themas

Beiträge: 969

Wohnort: Schweiz

Beruf: Software Entwickler

  • Private Nachricht senden

1

22.07.2008, 09:35

[Erledigt] System() unter Linux ?

Guten Morgen

Weiss jemand wie ich unter Linux aus einem Programm (C/C++) andere Programme / Systemprogramme starten kann?
Am einfachsten wäre sowas wie System(" ") unter Windows, wie heisst das bei Linux?

Habe bisher nichts gefunden im Web.

Danke,
Gruss Bene

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

2

22.07.2008, 09:43

Ebenfalls system()?!
@D13_Dreinig

rewb0rn

Supermoderator

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

3

22.07.2008, 10:47

system führt ja einfach eine konsolenanweisung aus.. welche da funktionieren kommt halt auf dein betriebssystem an ;)

Beneroth

Alter Hase

  • »Beneroth« ist der Autor dieses Themas

Beiträge: 969

Wohnort: Schweiz

Beruf: Software Entwickler

  • Private Nachricht senden

4

22.07.2008, 11:21

omg, jo habs jetzt kapiert.

Dachte die Funktion wäre aus windows.h oder so, dabei ist die ja schön im C-Standard.

Vielen Dank :roll: ;)

Anonymous

unregistriert

5

22.07.2008, 12:22

Beneroth
Denk nicht mal daran die auch nur ansatzweise zu benutzen, GERADE unter Linux! Wrappe lieber die System-APIs. Sehr geil ist wenn das öffnen einer Shell gesperrt ist ;) Dein Programm bleibt kleben.

Mehr Infos findest du hier und bei der Suchmaschine deiner Wahl:
http://c-plusplus.de/forum/viewtopic-var-t-is-39453.html

6

22.07.2008, 13:08

Ein Linux ohne benutzbare Shell ist nicht POSIX konform. In einem Fall, bei dem Usereingaben an system() weitergegeben werden, sollte man sie auf Gueltigkeit pruefen. z.B. mittels regulaeren Ausdruecken (aehnliches gilt auch fuer Datenbankabfragen). Den Warnungen zum Trotz: Mit einem Hammer kann man sich auch auf den Finger hauen, leider muss der Nagel in die Wand. Sollte ich ihn deswegen nicht benutzen? Nur entsprechende Vorsicht muss man walten lassen.

PS: Ich dachte system() ist eine Systemfunktion ...

7

22.07.2008, 15:20

Hm. Nunja, würdet ihr mal die richtigen Header für die Funktion einbinden und dann auchnoch den richtigen Namensraum angeben ... nein dann ist es eine Funktion des C++-Standards, die aus dem C-Standard übernommen wurde und als solches im Header cstdlib liegt. Natürlich, wie jede Funktion des C++-Standards, ist sie im Namesraum std zu finden.

C-/C++-Quelltext

1
2
3
4
5
6
#include <cstdlib>

int main()
{
    std::system("exec \"C:\\Programme\\Adobe\\AdobeRd32.exe\"");
}
ist demnach korrekt.
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

Beneroth

Alter Hase

  • »Beneroth« ist der Autor dieses Themas

Beiträge: 969

Wohnort: Schweiz

Beruf: Software Entwickler

  • Private Nachricht senden

8

22.07.2008, 15:47

Zitat von »"unsigned long"«

Beneroth
Denk nicht mal daran die auch nur ansatzweise zu benutzen, GERADE unter Linux! Wrappe lieber die System-APIs. Sehr geil ist wenn das öffnen einer Shell gesperrt ist ;) Dein Programm bleibt kleben.

Mehr Infos findest du hier und bei der Suchmaschine deiner Wahl:
http://c-plusplus.de/forum/viewtopic-var-t-is-39453.html


Guter Link.
Der Overhead und die Gefahren von System() sind mir bekannt.

Dieses Mal ist das Ding aber wirklich sinnvoll, der Nagel muss in die Wand und zwar schnell und simpel.
Ist ein Tool das ich in meiner Firma machen muss, und so gehts halt am schnellsten. :roll:

9

22.07.2008, 16:19

@Beneroth: Um Erleuchtung zu erlangen folge dem Tao of Programming.

xardias

Community-Fossil

Beiträge: 2 731

Wohnort: Santa Clara, CA

Beruf: Software Engineer

  • Private Nachricht senden

10

22.07.2008, 16:24

Zitat von »"unsigned long"«

Beneroth
Denk nicht mal daran die auch nur ansatzweise zu benutzen, GERADE unter Linux! Wrappe lieber die System-APIs. Sehr geil ist wenn das öffnen einer Shell gesperrt ist ;) Dein Programm bleibt kleben.

Ich würde system auch nicht aus Prinzip verteufeln. Wenn man nicht die Anforderung hat Systemunabhängig zu programmieren und nur einen simplen Subprozess starten möchte... eine sehr simple und schnelle Lösung.

Ich nutze es auch, um gnuplot aufzurufen. Mein Programm ist ein Konsolentool für *nix systeme only, also was spricht gegen system? Einfach und schnell implementiert eben. Wenn sich die Anforderungen ändern kann es neu implementiert werden, aber im moment erfüllt es alle Anforderungen.

Werbeanzeige