![]() |
Eigenes UNIX-Kommando ls(1)
Hallo,
ich möchte ein Programm entwickeln, welches ähnlich wie beim UNIX-Kommando ls(1) mir den Inhalt des aktuellen Verzeichnisses ('.') anzeigen kann. Zunächst soll es Größe /* ermittelt durch stat(2)*/ und Namen /* durch Tabulator getrennt '\t' */ aller im aktuellen Verzeichnis vorhandenen Einträge /* opendir(3), readdir(3), closedir(3) */ in einer Zeile pro Eintrag ausgeben. Am Ende der Ausgabe soll das Programm die Gesamtzahl der ausgegebenen Einträge ausgeben. Desweiteren sollte das Programm versteckte Dateien /*deren name mit einem '.' beginnt*/ nicht anzeigen und nicht reguläre Dateien ignorieren. Könnt ihr mir bei meinem Start behilflich sein? Ich möcht später das Programm um viele weitere Funktionen erweitern um in C und UNIX mehr Erfahrungen zu sammeln. Viele Grüße wa53kefa |
mit:
PHP-Code:
Wo haperts denn? |
das ist jetzt mein erstes C programm auf UNIX.
Bisher habe ich auf Java Programmiert, und meine ersten C Programme waren für ein ATmega32. Probleme habe ich vorallem mit den Fehlern. Was soll ich machen wenn ich überhaupt kein Speicher habe? Muss ich selber um Ressourcen fragen /*malloc(2)*/ oder macht das Programm unter UNIX das selber? noch ne frage: Ich Programmiere ja C und ist da die main-methode nicht int main (void){ } ? rückgabetyp ist verständlich wegen Fehlern z.B.. Aber wieso sollte ich der main funktion parameter übergeben? Wie "durchstöbere" ich mein Verzeichnis? also wie soll ich denn die einzelnen Dateien nach und nach durchforsten? Wenn ich mir beispielsweise die manualpage von closedir anschaue erkenne ich, was ich einbinden muss: #include<sys/types.h> #include<dirent.h> rückgabewert 0 für success, -1 bei fehler und errno wird gesetzt. Wie sieht errno denn aus? Wird errno auch gleich mit ausgegeben? Wie du siehst scheitere ich an Grundlagen, aber auch mir der man komme ich nicht richtig klar. Deswegen dachte ich mir, wenn ich vll so ein kleines Programm "geschrieben bekomme", könnte ich sehen, wie ich die sache rangehen muss und könnte das Programm selbstständig erweitern. |
Schau dir mal folgenden Auszug aus der GNU C Library an - dieser sollte dir sehr viel weiterhelfen.
Generell kann ich die GNU C Library als Nachschlagewerk nur empfehlen. [Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...] Viele Grüße, haze303 //Edit: Folgendes finde ich schöner. :) Code:
int main(void) { |
Zitat:
PHP-Code:
PHP-Code:
Zitat:
So wie ich es definiert hab gibt dir main() mit argc die Anzahl der übergebenen Parameter und mit argv[] die Parameter selbst. Zitat:
Zitat:
Zitat:
|
hallo jungs,
erstmal dankeschön für die sehr schnellen antworten, ich werde mir des mal in den nächsten tagen mal anschauen und versuchen zu programmieren. Unterschied zwischen Stack und Heap? Heap ist doch Bausstruktur und Stack ist doch stapeln (also last in first out | first in last out ?). Eine Frage habe ich noch, Ich Programmiere mit Notepad++ und woher weiß ich dann, dass das Programm funktioniert? Also wie oder wo muss ich dann die C-Datei laufen lassen? Ist ja nicht so wie bei Eclipse/Java wo ich ein ausgabefenster habe. Oder muss ich dafür die "originale" ls.c mit meiner ersetzen? ich kenne die befehle perror oder printf() aber wo werden diese angezeigt? Oder benötige ich wie bei Java ein Programm (Eclipse) zum Programmieren? Nochmals Danke an euch. viele Grüße |
@wa53kefa: Du solltest dir ein bisschen über die Basics und über den Modalitäten klarwerden, die zwischen der Erstellung von Programmcode und der Bibliothek oder dem ausführbaren Programm liegen.
Grundlegende Informationen: [Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...] Der Vorgang des Programmierens hat nichts mit der Übersetzung eines Programms zu tun. Hierfür benötigst du natürlich Software. Diese kann für ein *nix-Programm i.d.R. mit der [Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...] übersetzt werden. Diese ist quelloffen und Freeware. Es gibt für Linux unter anderem auch einige freie Entwicklungsumgebungen. Ich möchte dir da keine Empfehlung aussprechen, aber ich habe schon gute Erfahrungen mit Eclipse [Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...] gemacht. Das Verwenden einer IDE erleichtert für Einsteiger den Umgang durch Try&Error doch ungemein. Ausgabe von printf() erfolgt auf die Standardausgabe, sprich auf die Konsole, sofern du das Programm von dort aus startest. Stack vs. Heap: Stack: Speicher mit beschränkter Größe im Bereich von kB, der nach dem [Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...]-Prinzip funktioniert. Verwaltung dieses Speichers in C/C++ geschiet automatisch. Heap: Zugriff auf den Hauptspeicher des PCs, Anfrage beim OS zur Reservierung von Speicherbereichen. Müssen von Hand verwaltet (angefordert und freigegeben) werden. Der Heap ist nichts, womit sich ein Programmieranfänger in seinen ersten Gehversuchen rumschlagen sollte. Da kann man viel Schaden anrichten! ;) Seit wann gibt es Notepad++ auch für *nix? ;) |
hallo,
hat einer von euch mal kurz lust sich das Programm durchzulesen und mir eventuell ein paar Tipps und Verbesserungvorschläge zu geben? gruß |
Gerne - poste einfach den Quelltext hier in das [CODE]-Tag.
Viele Grüße, haze303 |
So,
hier ist der Code. Falls einem ein Fehler auffällt, oder anregungen hat, wie ich mein Programm verbessern kann, dann bin ich für die Anregungen sehr dankbar. Gruß wa53kefa Code:
#include <stdio.h> |
alles bestens.
|
Guter Stil in C(++): Initialisierung von Zeigern immer mit NULL um Fehlern vorzubeugen.
Code:
Code:
if (dp == NULL) { Code:
if(NULL != dp){ |
Hallo,
ich habe gerade bemerkt, dass ich das nicht gespeicherte Programm gepostet habe. Es fehlte noch eine wichtige Fehlerabfrage die ich noch hinzugefügt habe. Ob stat funktioniert hat oder wenn nicht, wieso es nicht funtioniert hat. Hier mein verändertes Programm, wo ich eure Anregungen miteingebracht habe: Code:
#include <stdio.h> |
OT, passt aber irgendwie ;-)
One day a Novice came to the Master. "Master," he said, "How is it that I may become a Writer of Programs?". The Master looked solemnly at the Novice. "Have you in your possession a Compiler of Source Code?" the Master asked. "No," replied the Novice. The Master sent the Novice on a quest to the Store of Software. Many hours later the Novice returned. "Master," he said, "How is it that I may become a Writer of Programs?". The Master looked solemnly at the Novice. "Have you in your possession a Compiler of Source Code?" the Master asked. "Yes," replied the Novice. The Master frowned at the Novice. "You have a Compiler of Source. What now can prevent you from becoming a Writer of Programs?". The Novice fidgeted nervously and presented his Compiler of Source to the Master. "How is this used?" asked the Novice. "Have you in your possession a Manual of Operation?" the Master asked. "No," replied the Novice. The Master instructed the Novice as to where he could find the Manual of Operation. Many days later the Novice returned. "Master," he said, "How is it that I may become a Writer of Programs?". The Master looked solemnly at the Novice. "Have you in your possession a Compiler of Source Code?" the Master asked. "Yes," replied the Novice. "Have you in your possession a Manual of Operation?" the Master asked. "Yes," replied the Novice. The Master frowned at the Novice. "You have a Compiler of Source, and a Manual of Operation. What now can prevent you from becoming a Writer of Programs?". At this the Novice fidgeted nervously and presented his Manual of Operations to the Master. "How is this used?" asked the Novice. The Master closed his eyes, and heaved a great sigh. The Master sent the Novice on a quest to the School of Elementary. Many years later the Novice returned. "Master," he said, "How is it that I may become a Writer of Programs?". The Master looked solemnly at the Novice. "Have you in your possession a Compiler of Source Code, a Manual of Operation and an Education of Elementary?" the Master asked. "Yes," replied the Novice. The Master frowned at the Novice. "What then can prevent you from becoming a Writer of Programs?". The Novice fidgeted nervously. He looked around but could find nothing to present to the Master. The Master smiled at the Novice. "I see what problem plagues you." said the Master. "Oh great master, please tell me." asked the Novice. The Master turned the Novice toward the door, and with a supportive hand on his shoulder said, "Go young Novice, and Read The Fucking Manual." And so the Novice became enlightened. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:04 Uhr. |
Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.