PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mit C/C++ Dateien kopieren, bzw. Befehle ausführen



24-11-2000, 13:04
Hi Leute,
bin nicht richtig fit in C/C++, aber ich hätte da mal eine Frage. Und zwar wie kann ich von C/C++ aus Befehle auf der Bash erledigen, z.B. eine Datei kopieren die dann in ein bestimmtes vom User festgelegtes Verzeichnis kopiert wird. Hat jemand ein Beispiel für so ein Programm? Wäre dankbar.
Have a nice and productive Day.

thommy
24-11-2000, 13:34
Befehle der Bash anzusprechen, ist u.a. mit "system" möglich. Als Argument benötigt der Befehl eine Zeichenkette. Ein Kopierprogramm könnte somit wie folgt aussehen:
<pre>
// Simples Kopieren über "cp":
#include &lt;string&gt;

int main(int argc, char** argv)
{
if (argc != 3) {
cerr &lt;&lt; "Verwendung: " &lt;&lt; argv[0] &lt;&lt; " &lt;source&gt; &lt;destination&gt;\n"
return -1;
}

string command = "cp "+string(argv[1])+" "+string(argv[2]);

system(command.c_str());
}
</pre>

In reinem C musst Du nur den string durch ein genügend großes char-Feld ersetzen.

Besser - weil effizienter - ist aber die Verwendung der C++- bzw. C-Sprachmittel; das Kopierprogramm könnte in C++ so geschrieben werden:

<pre>
#include &lt;fstream&gt;

int main(int argc, char** argv)
{
if (argc != 3) {
cerr &lt;&lt; "Verwendung: " &lt;&lt; argv[0] &lt;&lt; " &lt;source&gt; &lt;destination&gt;\n"
return -1;
}

ifstream source(argv[1]);
if ( source == NULL ){
cerr &lt;&lt; "Kann Quelldatei nicht oeffnen\n";
return -1;
}
ofstream dest(argv[2]);
if ( dest == NULL ){
cerr &lt;&lt; "Kann Zieldatei nicht oeffnen\n";
return -1;
}
char c;

while ( source.get(c) )
dest.put(c);

}
</pre>

Hoffe, es hilft Dir weiter...
Thomas

24-11-2000, 13:53
Thanx, für die megaschnelle Antwort. Ich hoffe ich komm damit klar. http://www.linuxforen.de/ubb/wink.gif