Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
Unixbefehl im C-Programm ausführen

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Programmieren - C
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
andy



Anmeldungsdatum: 07.11.1999
Beiträge: 150
Wohnort: Kiel

BeitragVerfasst am: 13. Sep 2000 16:48   Titel: Unixbefehl im C-Programm ausführen

Moin,

wie kann ich in C einen Unixbefehl ausfuehren ?
z.B. ls>test
Oder gibt es eine andere Moeglichkeit, alle Dateinamen eines Verzeichnisses
einzulesen ?

schoene Gruesse, Andy
 
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen

Shellschrubber(tm)
Gast





BeitragVerfasst am: 13. Sep 2000 20:32   Titel: Re: Unixbefehl im C-Programm ausführen

GNUten Abend!

Mit

system("ls >test");

geht das. Dazu muss man stdlib.h einbinden. Siehe auch "man 3 system".

Es geht aber auch anders. Gib mal "info libc" ein. Wähle "File system interface" und "Accessing directorys". Dort gibt es dazu Informationen und der Unterpunkt "Simple directory lister" enthält auch ein Beispielprogramm dazu.

Grüße von Wolfgang
 

andy



Anmeldungsdatum: 07.11.1999
Beiträge: 150
Wohnort: Kiel

BeitragVerfasst am: 15. Sep 2000 0:10   Titel: Re: Unixbefehl im C-Programm ausführen

Hallo Wolfgang,

hat prima geklappt. Ich habe ein kleines Programm geschrieben, daß alle Dateien in einem Verzeichnis in Kleinbuchstaben umwandelt. Recht sinnvoll bei M$ Import von HTML-Dokumenten.

/*
capital letters suck V0.1
compile:
gcc cl_suck.c -ocl_suck
install:
copy the binary to /usr/bin
usage:
When you start the command cl_suck all capital letter in the current
directory will be converted.
*/

#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <ctype.h>
#include <string.h>

int main(void)
{
char input[100];
char output[100];
int i;
FILE *filepointer;
system("ls >cl_suck_tempfile");
filepointer=fopen("cl_suck_tempfile","r");
if (filepointer == NULL)
{
fprintf(stderr,"file could not be opened
");
fprintf(stderr,"errornumber %d
",errno);
exit(1);
}
fgets(input,100,filepointer);
while (!feof(filepointer))
{
i=0;
while (i<strlen(input)-1)
{
output=tolower((int) input);
i++;
}
output[strlen(input)-1]='\0';
input[strlen(input)-1]='\0';
rename(input,output);
fgets(input,100,filepointer);
}
fclose(filepointer);
remove("cl_suck_tempfile");
printf("
thanks for using 'capital letters suck V0.1'
");
printf("visit www.nisse.de to get the latest version

");
return 0;
}
 
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen

Andreas
Gast





BeitragVerfasst am: 15. Sep 2000 16:42   Titel: Re: Unixbefehl im C-Programm ausführen

Hallöle !

Gute Idee ! Aber müßte es statt

...
i=0;
while (i<strlen(input)-1)
{
output=tolower((int) input);
i++;
}
...

wegen Inkompatibilitäten zwischen int und char[100] nicht

...
i=0;
while (i<strlen(input)-1)
{
output=tolower((int) input);
i++;
}
...

heißen ?
 

Andreas
Gast





BeitragVerfasst am: 15. Sep 2000 16:48   Titel: Re: Unixbefehl im C-Programm ausführen

Toll, jetzt haut man schon mal auf die Kacke
und dann das !

Kann es sein, daß das Forum keine eckigen
Klammern darstellen kann ?!

Z.B. sowas wie

output<ECKIGE_KLAMMER_AUF>i<ECKIGE_KLAMMER_ZU>=tolower((int) input<ECKIGE_KLAMMER_AUF>i<ECKIGE_KLAMMER_ZU>);
 

Andreas
Gast





BeitragVerfasst am: 15. Sep 2000 17:02   Titel: Re: Unixbefehl im C-Programm ausführen

Ok ! Ich habe das Ziel dieses Forum alleine
zu füllen ... Wink Sorry, bin noch auf der Arbeit und nicht mehr so ganz fit ...

Warum sagt mir keiner, daß
<ECKIGE_KLAMMER_AUF>i<ECKIGE_KLAMMER_ZU> den Text rekursiv darstellt ?

Also, ich meinte weiter oben, daß es

...
A=0;
while (A<strlen(input)-1)
{
output[A]=tolower((int) input[A]);
i++;
}
...

heißen müsste. (Statt dem "A" denkt Euch jetzt bitte ein "i" Wink )

... ja, ich weiß daß es die Vorschau-Funktion gibt Wink
 

andy



Anmeldungsdatum: 07.11.1999
Beiträge: 150
Wohnort: Kiel

BeitragVerfasst am: 15. Sep 2000 20:27   Titel: Re: Unixbefehl im C-Programm ausführen

Hi,

ja offensichtlich ist da was mit den eckigen Klammern verlorengegangen. Aber Du kannst es Dir auch runterladen unter:
www.nisse.de/cl_suck.c

schöne Grüße, Andy
 
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Programmieren - C Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy