[corrupted "utf-8" subject]
rouvas at di.uoa.gr
rouvas at di.uoa.gr
Tue Sep 30 23:44:40 EEST 2008
Giorgos Keramidas wrote:
> On Tue, 30 Sep 2008 04:01:16 +0300 (EEST), rouvas at di.uoa.gr wrote:
>> Giorgos Keramidas wrote:
>>> Îν ÏÏοÏÏαθήÏÎµÎ¹Ï Î½Î± Ïο ÎºÎ¬Î½ÎµÎ¹Ï Ïλο αÏ
ÏÏ
>>> με shell scripting, θα φας τα
>>> νιάτα σου προσπαθώντας να μαντέψεις τι
>>> process ID έχει το child process,
>>> θα κάνεις χακιές πάνω από χακιές με
>>> έξτρα σάλτσα από χακεμένες χακιές,
>>> θα βαÏÎµÎ¸ÎµÎ¯Ï ÎºÎ±Î¹ θα Ïο ÏαÏαÏήÏειÏ.
>>
>> ΣÏ
γνÏμη, Î´Î·Î»Î±Î´Î®Ï ÎºÎ±Î¹ με Ïο μÏαÏδÏν,
>> γιατί το $! είναι "χακιά";
>
>>> Σε κάποια πιο 'high level' γλώσσα όμως,
>>> μπορείς να γράψεις πράγματα όπως:
>>>
>>> [snip python code]
>>
>> Είμαι σίγουρος ότι ξέρεις την ιστορία
>> με το "Hello World" και τον
>> ÏÏÏÏο Ï
λοÏοίηÏÎ®Ï ÏοÏ
με βάÏη Ïην
>> εμÏειÏία ÏοÏ
ÏÏογÏαμμαÏιÏÏή. ÎÏÎνα Ïε
>> Î²Î¬Î¶Ï ÎºÎ¬ÏοÏ
ÏÏÎ¿Ï Ïη μÎÏη (ÏÏιν αÏÏ Î±Ï
Ïή,
>> σε λίγο θα σκεφθείς μια
>> καλύτερη υλοποίηση σε erlang... εγώ είμαι
>> ακÏμα ÏÏην αÏÏή... αλλά
>> μήÏÏÏ ÎÏÏ ÎºÎ¬Î½ÎµÎ¹ overlfow;).
>
> Hint: τίνος process το PID τυπώνεται παρακάτω,
> και τι σχέση έχει με το
> `job id' το οποίο πρέπει να τερματίσεις (3235
> Ïε αÏ
Ïή Ïην ÏεÏίÏÏÏÏη);
>
> keramida at kobe:/home/keramida$ ( sleep 3 ; echo $$ ) & echo $! ; sleep 5
> [1] 3235
> 3235
> 3216
> [1]+ Done ( sleep 3; echo $$ )
> keramida at kobe:/home/keramida$
Εμένα μου φαίνεται απλό. Το $! σου δίνει
το process ID της τελευταίας process που
ξεκίνησε *αμέσως* πριν από αυτό. Ποια
είναι η τελευταία process στο παράδειγμά
σου; Βρες την και θα έχεις απάντηση στο
ερώτημά σου. Αν δεν μπορείς να
αÏανÏήÏειÏ, δεν θα ÏÏαίει Ïο bash, οÏÏε Ïο
$!, αλλά ο ÏÏήÏÏÎ·Ï ÏοÏ
ÎμÏλεξε
τοιουτοτρόπως και εντυπωσιακώς τα
"μπούτια" του.
Εν προκειμένω, είναι προφανές ότι το
ÏελεÏ
Ïαίο process είναι ÏÏιν αÏÏ Ïην κλήÏη
του $! είναι αυτό της παρένθεσης (το subprocess
δηλαδή ÏÏι οι καθαÏ
ÏÏ ÎµÎ½ÏολÎÏ ÎµÎ½ÏÏÏ ÏηÏ
παρενθέσεως). Το οποίο είναι όντως το 3235,
όπως ακριβώς σου λέει το $!. Τέλος πάντων
δεν χρειάζεται να στο εξηγώ, γνωρίζω ότι
γνωρίζεις πολύ καλά. Που είναι η χακιά;
Δεν παρακάμπτεις τίποτα, ούτε
εκμεταλλεύεσαι παρενέργειες, ούτε
τίποτα εξωπραγματικό. Τεκμηριωμένα
πράματα είναι αυτά.
Πάντως, είναι και λίγο εκνευριστικό, ε;
Είσαι αρκετά έμπειρος, ώστε να μην
χρειάζεται να επιδεικνύεις τις γνώσεις
σου με εντυπωσιακά μεν άσχετα ως προς
την ουσία δε, παραδείγματα. (δεν είναι
απόπειρα κολακίας, ούτε που σε ξέρω, τα
γραφόμενά σου στη λίστα διαβάζω...)
Έπειτα, είναι και το άλλο. Ο άνθρωπος που
Îκανε Ïην αÏÏική εÏÏÏηÏη, είÏε Îνα ÏολÏ
απλό πρόβλημα, το οποίο λυνόταν απλά και
αÏοÏελεÏμαÏικά με Ïην ÏÏήÏη ÏοÏ
$!. Î
ÏÏοÏÎγγιÏή ÏοÏ
για Ïο ÏÏ
γκεκÏιμÎνο
πρόβλημα, παρόλο που πιθανόν να
αντιμετωπίζει και καταστάσεις του Pathfinder
ÏÏον ÎÏη ή ÏÏοÏ
Î±Î»Î»Î¿Ï Ïο ÏÏείλοÏ
ν, Ïην
θεÏÏÏ Ï
ÏεÏβολική και Ïε ÏÏ
νδÏ
αÏÎ¼Ï Î¼Îµ Ïον
χαρακτηρισμό του $! ως χακιά με έκανε να
ÏοÏ
αÏανÏήÏÏ.
Αυτά,
Στάθης
More information about the Linux-greek-users
mailing list