c - Frage

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
GhostLight
Beiträge: 59
Registriert: 27.12.2003 16:17:08
Wohnort: nähe Dortmund
Kontaktdaten:

c - Frage

Beitrag von GhostLight » 03.02.2004 20:26:06

hallo.
ist es möglich aus einem laufenden c-programm heraus befehle wie mkdir oder rmdir auszuführen?
wenn ja wie?
Greetz from Hennen downtown
Philipp
Mir geht es gut. Ich mag die kleinen Pillen, die sie mir dauernd geben. Warum bin ich an das Bett gefesselt?

Benutzeravatar
spiffi
Beiträge: 1128
Registriert: 09.08.2003 19:02:27

Beitrag von spiffi » 03.02.2004 20:34:54

Jep, das geht mit der Funktion system.

Code: Alles auswählen

#include <stdlib.h>

int main(int argc, char* argv[])
{
    system("mkdir somedir");
}

Benutzeravatar
The Torso
Beiträge: 882
Registriert: 13.07.2003 12:46:40
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von The Torso » 03.02.2004 21:39:32

Ich meine irgendwo gelesen zu haben, dass man diese Funktion so wenig wie möglich nutzen sollte, weiß aber nicht mehr warum.
Ich hab sie sonst recht gerne.
Debian GNU/Linux 00101010

Benutzeravatar
bitbieger
Beiträge: 179
Registriert: 23.10.2003 08:26:00
Kontaktdaten:

Beitrag von bitbieger » 04.02.2004 09:18:37

Hi,

nimm doch lieber direkt die Funktionen aus der glibc:

Code: Alles auswählen

int mkdir (const char *FILENAME, mode_t MODE);
und

Code: Alles auswählen

int rmdir (const char *FILENAME);
cu,
bitbieger

osi
Beiträge: 6
Registriert: 27.11.2003 21:51:21

Beitrag von osi » 21.02.2004 09:36:38

The Torso hat geschrieben:Ich meine irgendwo gelesen zu haben, dass man diese Funktion so wenig wie möglich nutzen sollte, weiß aber nicht mehr warum.
Ich hab sie sonst recht gerne.
Weils plattformspezifisch ist. Wenn Du rmdir über system() aufrufst, wirst Du damit unter Windows nicht weit kommen, weil es den Befehl "rmdir" dort nicht gibt.
Die entsprechenden Aufrufe aus der libc funktionieren hingegen auf jedem System, wo es die libc gibt.

Benutzeravatar
Joghurt
Beiträge: 5244
Registriert: 30.01.2003 15:27:31
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Joghurt » 21.02.2004 15:56:31

osi hat geschrieben:Weils plattformspezifisch ist. Wenn Du rmdir über system() aufrufst, wirst Du damit unter Windows nicht weit kommen, weil es den Befehl "rmdir" dort nicht gibt.
Stimmt schon, aber "rmdir" gibt es unter WinDOS.

Ein anderer Grund ist glaube ich, dass man noch einfacher einen Buffer-Overflow ausnutzen kann, um an eine setuid-shell zu kommen

Benutzeravatar
pdreker
Beiträge: 8298
Registriert: 29.07.2002 21:53:30
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Nürnberg

Beitrag von pdreker » 22.02.2004 21:09:05

Stimmt schon, aber "rmdir" gibt es unter WinDOS.
Das nimmt aber total andere Parameter als unter Linux und ausserdem ist der Verzeichnistrenner unter Win \ und nicht /. system("rmdir blab/bla/bla") funzt unter Win dann wohl nicht, weil Win nicht weiss, was /bal/bla/bla bedeutet...

Patrick
Definitely not a bot...
Jabber: pdreker@debianforum.de

Antworten