Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » C++ Text

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
30.01.2009, 23:16 Uhr
~test123
Gast


Hay,

Habe da mal eine Frage...
Was für einen C++ Befehl muss ich eingeben damit sich das MS DOS nicht sofort wieder schliest nachdem es den Text angezeigt hat?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
30.01.2009, 23:28 Uhr
CppProgrammer



FAQ:

www.fun-soft.de/showtopic.php?threadid=6479&time=1215185407
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
30.01.2009, 23:54 Uhr
~test123
Gast


Danke
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
31.01.2009, 00:05 Uhr
~test123
Gast


Und dann hätte ich noch ne Frage ^^
Wie kann ich es mehrmals hintereinandermachen?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
31.01.2009, 08:23 Uhr
Tommix




Zitat von ~test123:
Und dann hätte ich noch ne Frage ^^
Wie kann ich es mehrmals hintereinandermachen?

Viagra.
[SCNR]

Was willst Du mehrmals hintereinander machen?

- Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
31.01.2009, 11:15 Uhr
~test123
Gast


ehm mehrmals hintereinander das programm was schreiben lassen weil das ist das erste mal das ich mit sowas arbeite bzw. sachen erstelle.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
31.01.2009, 11:21 Uhr
~test123
Gast


Naja das hab ich jetzt mitlerweile rausbekomm..
dann hätte ich jetz noch ne frage wie lass ich dann das MS DOS sachen aufrufen...
z.b. ein icon auf dem desktop oder eine mp3. datei.

MfG test123
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
01.02.2009, 00:30 Uhr
0xdeadbeef
Gott
(Operator)


std::system spawnt eine Shell und führt darin aus, was immer man als Parameter mitgibt. Unter Windows kann man auf die Art, wenn der Dateityp mit einer Anwendung verbunden ist, Dateien "ausführen." Zum Beispiel

C++:
#include <cstdlib>

// ...

std::system("C:\foo.mp3");


...wenn cfoo.mp3 eine MP3-Datei ist. Dabei gilt Shell-Syntax, unter Umständen wirst du den Kram also in \"\" einschließen müssen.

ABER:

Es gelten die üblichen Probleme bei der Verwendung von std::system oder anderer, vergleichbarer Techniken. Siehe dazu www.fun-soft.de/showtopic.php?threadid=9346

Generell empfiehlt sich die Benutzung von Bibliotheken statt Prozessen, wenn es um Programmlogik geht (wenn du etwa in Versuchung kommst, etwas wie system("cls"); zu machen, empfiehlt sich je nach Plattform die Ausgabe von \x1b[2J; oder die Verwendung von clrscr(); aus dem DOS-conio-API). Sollte aber die Verwendung eines anderen Programms unabkömmlich sein, ist eine fork-exec-Kombination deutlich besser als system, etwa

C++:
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>

#include <iostream>

int main() {
  pid_t pid;
  int status;

  pid = fork();

  if(pid == 0) {
    // Führt "ls -l -a" aus
    execlp("ls", "ls", "-l", "-a", NULL);
  } else {
    std::cout << "child pid: " << pid << std::endl;
    waitpid(pid, &status, 0);
  }
}


...hier hast du mehr Kontrolle darüber, was ausgeführt wird und was damit passiert. Zum Beispiel lassen sich die Ein- und Ausgabeströme so umbiegen, dass die Ausgabe des Kindprozesses vom Vaterprozess gelesen werden können, etwa so:

C++:
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>

#include <iostream>
#include <string>

int main() {
  pid_t pid;
  int status;
  int pipes[2];

  pipe(pipes);
  pid = fork();

  if(pid == -1) {
    std::cerr << "Fehler beim Forken!";
  } else if(pid == 0) {
    close(STDOUT_FILENO);
    dup(pipes[1]);
    close(pipes[0]);

    execlp("ls", "ls", "-l", "-a", NULL);
  } else {
    std::string s;

    close(STDIN_FILENO);
    dup(pipes[0]);
    close(pipes[1]);

    std::cout << "child pid: " << pid << std::endl;

    while(std::getline(std::cin, s)) {
      std::cout << "Received from child: " << s << std::endl;
    }

    waitpid(pid, &status, 0);
  }
}


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
01.02.2009, 12:06 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


oder unter windows halt dann ShellExecute
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
01.02.2009, 15:48 Uhr
0xdeadbeef
Gott
(Operator)


ShellExecute unter Windows (für welches wir uns hier im falschen Forum befinden) ist ja nun konzeptionell noch etwas ganz anderes. Naja, vielleicht nicht "ganz" anders, aber schon sehr verschieden - im Grunde handelt es sich um eine Art programmatische Schnittstelle zum Windows-Kontextmenü. Oder umgekehrt, je nachdem, wie man es sehen will.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: