MauriDalia Δημοσ. 13 Ιανουαρίου 2009 Δημοσ. 13 Ιανουαρίου 2009 Καλησπέρα σας, Θέλω σε γλώσσα προγραμματισμου C , να φτίαξω ένα υποτυπώδες shell κελυφος προγραμματισμου. Χρησιμοποιώ τον παρακάτω κώδικα > #include <stdio.h> #include <stdlib.h> #include <unistd.h> int main(int argc, char *argv[], char *envp[]) { char c = '\0'; printf("\n[MY_SHELL ] "); while(c != EOF) { c = getchar(); if(c == '\n') printf("[MY_SHELL ] "); } printf("\n"); return 0; } Μηπώς γνωρίζει κάποιος ,πως μπορώ να ενεργοποιήσω το Shell για να μπορω να τρχω εκέι εντολές?ΠΧ να τρέχω εντολές τύπου ls που θα έχω υλοποιήσει μόνη μου Ευχαριστω
sanidas Δημοσ. 13 Ιανουαρίου 2009 Δημοσ. 13 Ιανουαρίου 2009 τσέκαρε την συνάρτηση exec() Ρίξε και μία ματιά στην system()
Επισκέπτης Δημοσ. 13 Ιανουαρίου 2009 Δημοσ. 13 Ιανουαρίου 2009 Πάντος κοίταξε μία το ncurses . όχι, μη κοιτάξεις το ncurses...η εργασία σου λογικά είναι στα πλαίσια του μαθήματος "Προγραμματισμός Συστήματος" και πρέπει να χρησιμοποιήσεις fork() και exec() μόνο...
pinball_elf Δημοσ. 13 Ιανουαρίου 2009 Δημοσ. 13 Ιανουαρίου 2009 > #include <unistd.h> #include <stdlib.h> int main (void) { setenv ("PATH", "/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin/:.", 1); setenv ("PS1", "[MY_SHELL] ", 1); execlp ("/bin/sh", "/bin/sh", (char *) 0); exit(0); }
Επισκέπτης Δημοσ. 13 Ιανουαρίου 2009 Δημοσ. 13 Ιανουαρίου 2009 @MauriDalia Η χρήση της int main(int argc, char *argv[], char *envp[]) ειναι λάθος καθώς σύμφωνα με την ISO C το πρότυπο της main() είναι int main (int argc, const char *argv[])... όσον αφορά το char *envp[] οι μεταβλητές περιβάλλοντος πρέπει να τις χειριζόμαστε με getenv(), setenv() και τα συναφή, κάνοντας βέβαια χρήση της extern char **environ(ορίζονται από το POSIX.1)
MauriDalia Δημοσ. 14 Ιανουαρίου 2009 Μέλος Δημοσ. 14 Ιανουαρίου 2009 Παιδιά σας ευχαριστω πάρα πολυ για τις απαντησεις σας!!!
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.