Rückgabewert von "system"
-
Hallo Forum,
hat die Funktion "system" - mit welcher ich ja externe Programme aufrufen kann - einen Rückgabewert, den man auswerten kann? Und gibt es die Möglichkeit unter DOS mittels C Files zu suchen? Bisher verwende ich die Version "dir c:\*.xxx > Files.txt" und lese anschliessend die Datei Files.txt aus. Gibt es hier eine einfachere Variante?
Viele Fragen, und hoffentlich auch antworten
Danke und Grüsse
newbie
-
gibt es so nicht. Aber afaik hat WindAPI ein Funktionen zum Bearbeiten des Verzeichnissystems...
cYa
DjR
-
Du willst also praktisch wissen, welche Dateien alle in einem bestimmten verzeichnis vorhanden sind, bzw. wie viele von einem bestimmten dateitypen? da gibt es ne funktion:
WIN32_FIND_DATA Data; HANDLE Search=FindFirstFile("saved/*.dpm", &Data); // "saved/*.dpm" ist hierbei um den Ordner und den Dateityp anzugeben. // Wenn du alle dateien suche willst gibst einfach *.* an if(Search!=INVALID_HANDLE_VALUE) { int count = 0; do { if(count < 1000) { sprintf(SavedFiles[count], "%s", Data.cFileName); count++; } } while(FindNextFile(Search, &Data)!=0); FindClose(Search); //Ausgabe sprintf(buffer, "... %d gespeicherte Datei[en] gefunden...", count); ADDSTRING(buffer); } else { sprintf(buffer, "...keine gespeicherten Dateien gefunden..."); ADDSTRING(buffer); }
ach ja, wegen header musste ma gucken, weiß net genau welche du da brauchst, aber ich schätze mal windows.h / windowsx.h
hoffe ich konnte dir helfen
mfg
[edit] Rückgabewerte von "system()" (Laut MSDN):
Return Value
If command is NULL and the command interpreter is found, the function returns a nonzero value. If the command interpreter is not found, it returns 0 and sets errno to ENOENT. If command is not NULL, system returns the value that is returned by the command interpreter. It returns the value 0 only if the command interpreter returns the value 0. A return value of – 1 indicates an error, and errno is set to one of the following values:
E2BIG
Argument list (which is system-dependent) is too big.
ENOENT
Command interpreter cannot be found.
ENOEXEC
Command-interpreter file has invalid format and is not executable.
ENOMEM
Not enough memory is available to execute command; or available memory has been corrupted; or invalid block exists, indicating that process making call was not allocated properly.
Parameter
[/edit][ Dieser Beitrag wurde am 17.02.2003 um 18:15 Uhr von mrchat editiert. ]
-
Syntax und Return von system()
#include <process.h> Required only for function declarations
#include <stdlib.h> Use STDLIB.H for ANSI compatibilitySyntax int system( const char *command );
Parameter Description
command Command to be executed
The system function passes command to the command interpreter, which executes the string as an operating-system command. The system function refers to the COMSPEC and PATH environment variables that locate the command-interpreter file (the file named COMMAND.COM in MS-DOS). If command is a pointer to an empty string, the function simply checks to see whether or not the command interpreter exists.Return Value
If command is NULL and the command interpreter is found, the function returns a nonzero value. If the command interpreter is not found, it returns the value 0 and sets errno to ENOENT. If command is not NULL, the system function returns the value 0 if the command interpreter is successfully started.
A return value of -1 indicates an error, and errno is set to one of the following values:E2BIG
In MS-DOS, the argument list exceeds 128 bytes, or the space required for the environment information exceeds 32K.
ENOENT
The command interpreter cannot be found.
ENOEXEC
The command-interpreter file has an invalid format and is not executable.
ENOMEM
Not enough memory is available to execute the command; the available memory has been corrupted; or an invalid block exists, indicating that the process making the call was not allocated properly.
M.E ist system nicht sonderlich schön, da es einen weiteren Commando-interpreter öffnet.
Viel spaß
-
Danke für die Antwort und auch den Code. Ich hätte wohl dazusagen müssen, das ich nicht in der Windowsconsole hantiere, sondern unter DOS 6.22. Somit fällt die WinAPI in diesem Bereich aus. Aber den Teil mit den Rückgabewerten von System hab ich mal getestet. Der TC 2.01 kennt (scheinbar) nur zwei Rückgabewerte für System: 0=success, 1=failure. Aber das reicht auch schon. Das mit den Fileoperations sollt ich jetzt auch hinkriegen, demnächst kommt meine BorlandDoku (ebay sei dank), da sollten die Funktionen ja hoffentlich hinreichend beschrieben sein. Das Problem war, ich habe mir Literatur über ANSI-C zu gemüte geführt. Hier ist allerdings nichts über die OS-Spezifischen Funktionen beschrieben. Ist ja auch gut so, sonst brauchts für den Standard wahrscheinlich einen LKW zum Transport... Den BorlandCompiler gabs halt gratis zum runterladen, nur leider ohne richtige Doku. Aber die ist ja unterwegs und somit wird alles gut. Evtl. brauch ich dann "system" garnicht mehr...
Ich danke euch nochmals für eure Mühe!Gruss
Newbie