The UNIX and Linux Forums  


Go Back   De Unix-en Linux Forum > Top Forums > Programmeren en Shell Scripting
.
google unix.com



Programmeren en Shell Scripting Post vragen over KSH, CSH, SH, Bash, Perl, PHP, sed, awk en andere shell scripts en shell scripting talen hier.

Meer UNIX en Linux Forum Onderwerpen Misschien vindt u Helpful
Draad Thread Starter Forum Antwoorden Last Post
Kan een kind proces terugkeer van een specifieke waarde aan een ouder-proces? Ametis1970 Hoog Niveau Programmering 8 04-10-2008 12:22 AM
over kind proces compbug UNIX voor Dummies Questions & Answers 12 03-22-2006 07:55 PM
gdb op kind-proces shriashishpatil UNIX for Advanced & Expert Gebruikers 4 12-12-2005 07:57
KDM kind proces larryase UNIX voor Dummies Questions & Answers 6 01-24-2005 05:41 PM
Kind Proces PID skannan Hoog Niveau Programmering 2 06-10-2002 08:54

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Zoeken in deze Thread Rate Thread Display Modes
  #1 (permalink)  
Old 05-25-2006
MichLab MichLab is offline
Geregistreerde gebruiker
  
 

Join Date: May 2006
Posten: 4
Smile In ksh, hoe een in-line kind sub-proces krijgt haar eigen PID?

Dit is niet hetzelfde als een paar van de andere geplaatst die betrekking hebben op sub-proces PIDs (dat zag ik toch).

Als zot bevat:
echo "voornaamste mypid: $ $ - lastpid: $!"
(
echo "block mypid: $ $ - lastpid: $! - PPID: $ PPID"
ps-ef> xxx
slaap 5
echo "block mypid: $ $ - lastpid: $! - PPID: $ PPID"
) &
echo "voornaamste mypid: $ $ - lastpid: $! - PPID: $ PPID"
slapen 6
Dan: ksh zot (onder Solaris en MKS) resulteert in:
belangrijkste mypid: 7318 - lastpid:
blok mypid: 7318 - lastpid: - PPID: 607
belangrijkste mypid: 7318 - lastpid: 7320 - PPID: 607
blok mypid: 7318 - lastpid: - PPID: 607
Het verbaast me dat in de gevorkte kind-proces, dat $ $ nog steeds geeft het pid van de belangrijkste proces. dwz zowel tonen als $ $ 7318 - Ik had het kind naar verwachting $ $ 7320 dollar te hebben. (U kunt negeren PPID - ik keek naar aanverwante begrippen.)

Als je: "grep 7320 xxx" krijgt u:
root 7320 7318 0 13:59:45 pts / 9 0:00 ksh zot
root 7321 7320 1 13:59:45 pts / 9 0:00 ps-ef
waaruit duidelijk blijkt het kind-proces en als je op "kill -9" dat pid vóór de 5 seconden op is, zou je niet het tweede blok lijn.

Mijn bedoeling was om het kind proces om zijn eigen pid record in plaats van de ouder doet het op haar naam. Ik realiseer me dat de ouder $ kan gebruiken! maar waarom kan het kind geen gebruik maken van $ $ voor haar eigen PID? By the way, als u het uittreksel blok code en plaats deze in een apart bestand en noem het, dan krijg je de verwachte resultaten.

Dank u bij voorbaat voor eventuele inzichten.
Michel
  #2 (permalink)  
Old 05-25-2006
Perderabo's Avatar
Perderabo Perderabo is offline Forum Staff  
Unix Daemon
  
 

Join Date: Aug 2001
Locatie: Ashburn, Virginia
Berichten: 9.127
ksh stelt de code en vervolgens uitvoert. De $ $ is al lang voorbij voordat de vork optreedt. Dus vervangen (stuff) notatie met
ksh-c "stuff"

Niet een geweldige oplossing, maar het werkt.
  #3 (permalink)  
Old 05-25-2006
MichLab MichLab is offline
Geregistreerde gebruiker
  
 

Join Date: May 2006
Posten: 4
Dan hoe zou ooit de volgende werkzaamheden:
xxx \u003d $ (date)
(Sleep 5
xxx \u003d $ (date)
echo $ xxx
) &
echo $ xxx
Als $ xxx werden gedwongen toen de (...)& wordt gescand, waarna de twee echo-opdrachten zou altijd dezelfde tijd aangeven, maar zij niet (je kunt het proberen). Bent u suggereert dat $ $ is gedwongen door andere regels dan $ xxx?
  #4 (permalink)  
Old 05-25-2006
Perderabo's Avatar
Perderabo Perderabo is offline Forum Staff  
Unix Daemon
  
 

Join Date: Aug 2001
Locatie: Ashburn, Virginia
Berichten: 9.127
Ja. Speciale parameters en benoemde parameters zijn verschillend. Ik zou na een aantal voorbeeldcode te bewijzen, maar je je was me voor.
  #5 (permalink)  
Old 05-26-2006
MichLab MichLab is offline
Geregistreerde gebruiker
  
 

Join Date: May 2006
Posten: 4
Thumbs up

Bedankt voor de inzichten.

Ik vind het gedrag borderline noten vermoeden verschillende regels voor dwingen variabelen.

Een aantoonbaar geldige definitie die ik kan bedenken als plaatsvervanger is dat "$ $" is per definitie de eerste shell PID in tegenstelling tot het huidige proces PID's, onafhankelijk van de sub-schelpen net als PPID is de moedermaatschappij van de oorspronkelijke schaal, ongeacht of ze in een sub-shell of niet. Dit is consistent met een paar man pagina's ksh ik opgegraven, maar niet voor de hand.

Het lijkt ook in overeenstemming te zijn met een paar experimenten probeerde ik met "eval" met een composiet string die resulteert in "$ $" die de oorspronkelijke ontleden van de (....)& zou beletten dwingen van een kennelijke $ $ en dat produceerde ook hetzelfde resultaat.

Dat ksh behandelt een subschil anders een gevorkte voorbeeld van ksh in overeenstemming is met andere aspecten van gedrag (bv. variabelen niet hoeft te worden uitgevoerd om gezien te worden door een sub-schaal), maar het zeker messes tot het begrip van het gebruik van inline code vs externe scripts in een consistente wijze.

Ik zal ontlenen een alternatieve strategie (messing met ps-ef is geen optie omdat mijn code moet draaien onder Solaris en Windows / MKS waarin ps verschilt door de informatie over de procesparameters wordt beheerd door Windows).

Nogmaals bedankt.
Michel
  #6 (permalink)  
Old 05-26-2006
Perderabo's Avatar
Perderabo Perderabo is offline Forum Staff  
Unix Daemon
  
 

Join Date: Aug 2001
Locatie: Ashburn, Virginia
Berichten: 9.127
Een betere manier om na te denken over het is dat "subschil" is niet gegarandeerd een nieuw proces. Kijk goed naar de definitie van () en je vindt "afzonderlijke milieu" in plaats van "nieuw proces". Zolang er geen bijwerkingen verspreiden over het ouder milieu, kan dit worden gedaan zonder een vork en forking is duur. Dus dit laat de deur open voor een snellere implementaties. Ook Dave Korn wilde ksh universeel te zijn en sommige OS's staan niet toe fork (). (Ze kunnen een paaien (), die als een fork () / exec () combo of iets dergelijks.)

Hoe dan ook, dacht ik een manier om het te doen ... denk ik. Achtergrond van de subschil. Hebben de ouders verkrijgen $! en stuur het in de subschil via een named pipe. Dan is de moedermaatschappij wacht voor de subschil te verlaten.
Closed Thread

Bladwijzers

Thread Tools Zoeken in deze Thread
Zoeken in deze Thread:

Uitgebreid zoeken
Display Modes Beoordeel deze draad
Beoordeel deze draad:

Posting Regels
Jij mag niet Post Nieuwe threads
Jij mag niet na antwoorden
Jij mag niet post attachments
Jij mag niet bewerk uw berichten

BB code is Aan
Smilies zijn Aan
[IMG] code Aan
HTML-code is Uit
Trackbacks zijn Aan
Pingbacks zijn Aan
Refbacks zijn Aan




Alle tijden zijn GMT -4. Het is nu 09:26 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Vertalingen Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
De Unix-en Linux Forums Copyright © 1993-2009. Alle rechten Reserved.Ad Beheer door RedTyger

Content Relevante URL's door vBSEO 3.2.0