profitis Δημοσ. 24 Νοεμβρίου 2007 Δημοσ. 24 Νοεμβρίου 2007 Προσπαθώ να φτιάξω ένα δικό μου command prompt σε linux.Μέσα απ αυτο πρέπει να εκτελείται οποιαδήποτε εντολή συστήματος η εκτελέσιμο. Στο μάθημα μας είπανε να χρησιμοποιήσουμε την οικογένεια συναρτήσεων exec. Απ αυτές η execvp ειναι και που βολεύει και που δουλεύει για όλα τα προγράμματα και για όλες τις εντολές.Δεν υποστηρίζει όμως ανακαταθεύνση εισόδου/εξόδου. Οι άλλες εντολές,η execve ,execl κτλ υποστηρίζουν ανακατεύθυνση; Σας ευχαριστώ
m1cRo Δημοσ. 24 Νοεμβρίου 2007 Δημοσ. 24 Νοεμβρίου 2007 Προσπαθώ να φτιάξω ένα δικό μου command prompt σε linux.Μέσα απ αυτο πρέπει να εκτελείται οποιαδήποτε εντολή συστήματος η εκτελέσιμο. Στο μάθημα μας είπανε να χρησιμοποιήσουμε την οικογένεια συναρτήσεων exec. Απ αυτές η execvp ειναι και που βολεύει και που δουλεύει για όλα τα προγράμματα και για όλες τις εντολές.Δεν υποστηρίζει όμως ανακαταθεύνση εισόδου/εξόδου. Οι άλλες εντολές,η execve ,execl κτλ υποστηρίζουν ανακατεύθυνση; Σας ευχαριστώ Kitaxe thn popen etc opos anigeis kapio arxeio etc mporeis na anixeis kai thn exodo mias diergasias .Telospanton psakse gia ta pipes an thes na matheis kati parapanw kai na xrisimopoieis thn execve .... Alla pisteuw h popen einai auto pou xreiazesai ,kai den tha xreiasteis thn execve .
dark_banishing Δημοσ. 24 Νοεμβρίου 2007 Δημοσ. 24 Νοεμβρίου 2007 Όχι οι execve, execl κτλ δεν υποστηρίζουν αυτό που θες. Μείνε στην execvp που βολεύει περισσότερο.. Για ανακατεύθυνση δοκίμασε την dup2 .. Συγκεκριμένα με : dup2(input_file, STDIN_FILENO); κάνεις ανακατεύθυνση το stdin στο Input file. Δεν χρειάζεται κάτι παραπάνω. Γίνεται αυτόματα! Ομοίως : dup2(output_file, STDOUT_FILENO); Όπου Input και output files είναι αρχεία που έχεις ανοίξει με την open.. (και χρησιμοποιώντας τα κατάλληλα ορίσματα για εγγραφή/δημιουργία αν δεν υπάρχει το αρχείο..) Τέλος πρόσεξε να κάνεις Include το κατάλληλο header για να σου αναγνωρίζει τα STDIN_FILENO, STDOUT_FILENO και να μην πετάει error. Καλή συνέχεια !
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.