wait(1p)
wait(1p)
NAMN
wait — vänta på att processer avslutas
SYNOPSIS
wait [pid...]
BESKRIVNING
När en asynkron lista (se avsnitt 2.9.3.1, Exempel) startas av skalet blir process-ID:t för det sista kommandot i varje element av den asynkrona listan känt i den aktuella skal-exekveringsmiljön; se avsnitt 2.12, Shell Execution Environment.
Om verktyget wait anropas utan operander ska det vänta tills alla process-ID:n som är kända av det anropande skalet har avslutats och därefter avslutas med returvärdet noll.
Om en eller flera pid-operander anges och dessa motsvarar kända process-ID:n ska wait vänta tills alla har avslutats. Om någon pid anger okända process-ID:n ska wait behandla dessa som om de var kända process-ID:n som avslutats med statuskod 127. Returvärdet från wait ska vara samma som det sista angivna pid-operandens process.
De kända process-ID:na gäller endast för anrop av wait i den aktuella skal-exekveringsmiljön.
FLAGGOR
Inga.
OPERANDER
Följande operand stöds:
pid
- Ett av följande:
1. Ett osignerat heltal som representerar process-ID:t för ett kommando som ska väntas på. 2. Ett jobbstyrnings-ID (se POSIX.1-2017, avsnitt 3.204, Job Control Job ID) som identifierar en bakgrundsprocessgrupp som ska väntas på. Gäller endast i den aktuella skal-exekveringsmiljön; se avsnitt 2.12, Shell Execution Environment. Returvärdet bestäms av det sista kommandot i pipelinen.
OBS: Jobbstyrnings-ID som operand stöds endast på system med User Portability Utilities-optionen.
STDIN
Inte använt.
INDATAFILER
Inga.
MILJÖVARIABLER
Följande miljövariabler ska påverka exekveringen av wait:
LANG
- Standardvärde för internationaliseringsvariabler som är osatta eller tomma. Se POSIX.1-2017, avsnitt 8.2.
LC_ALL
- Åsidosätter alla andra internationaliseringsvariabler om satt till en icke-tom sträng.
LC_CTYPE
- Anger lokalanpassning för tolkning av teckendata.
LC_MESSAGES
- Anger lokalanpassning för diagnostiska meddelanden till standardfel.
NLSPATH
- Anger plats för meddelandekataloger för LC_MESSAGES.
ASYNKRONA HÄNDELSER
Standard.
STDOUT
Inte använt.
STDERR
Standardfel används endast för diagnostiska meddelanden.
UTGÅNGSFILER
Inga.
UTÖKAD BESKRIVNING
Ingen.
SLUTSTATUS
Om en eller flera operander angavs och alla antingen avslutats eller var okända, returnerar wait samma status som det sista angivna kommandot.
- Om processen avslutades av en signal ska returvärdet vara >128, unikt för varje signal, men det exakta värdet är ospecificerat. (Se kill(1p) -l.)
- Annars gäller:
* **0** – wait anropades utan operander och alla kända processer har avslutats. * **1–126** – Ett fel upptäcktes. * **127** – Den sista angivna pid var okänd.
FELSITUATIONER
Standard.
Följande avsnitt är informativa.
ANVÄNDNING
I de flesta implementationer är wait en inbyggd del av skalet. Om det körs i en subshell eller separat exekveringsmiljö, exempelvis:
(wait) nohup wait ... find . -exec wait ... \;
returnerar det omedelbart eftersom inga kända process-ID:n finns i dessa miljöer.
Historiska implementationer av interaktiva skal har raderat status för avslutade bakgrundsprocesser innan varje prompt, vilket gjorde att status ofta gick förlorad. POSIX.1-2017 kräver att skalet sparar status tills den begärs, vilket gör skript som:
j1& p1=$! j2& wait $p1 echo "Job 1 avslutades med status $?" wait $! echo "Job 2 avslutades med status $?"
tillförlitliga.
Skalet får slänga status för processer om applikationen inte kan nå deras PID (t.ex. om $! aldrig användes). Skalet behöver bara minnas {CHILD_MAX} processer.
EXEMPEL
Ett exempel på att identifiera vilken signal som avslutade en process:
sleep 1000 & pid=$! kill -kill $pid wait $pid echo "$pid avslutades av en SIG$(kill -l $?) signal."
Exempel med pipeline och jobbstyrning:
sleep 257 | sleep 31 & jobs -l %% wait <pid för sleep 31> wait %%
MOTIVERING
wait beskrivs inte i termer av funktionen waitpid() från POSIX.1-2017 System Interfaces, för att undvika överspecificering. Men wait måste vänta på en specifik process om argument ges. Historiska implementationer använde wait() tills rätt PID returnerades eller inte fanns. Detta kan dock göra att status för vissa bakgrundsjobb går förlorad. Därför rekommenderas funktionalitet motsvarande waitpid().
Möjligheten att vänta på flera pid operander kommer från KornShell.
FRAMTIDA RIKTNINGAR
Inga.
SE ÄVEN
kill(1p), sh(1p), jobs(1p), bg(1p), fg(1p), sleep(1p). POSIX.1-2017: avsnitt 3.204 Job Control Job ID, kapitel 8 Environment Variables. POSIX.1-2017 System Interfaces: wait(3p).
COPYRIGHT
Delar av denna text är återgiven från IEEE Std 1003.1-2017, Standard for Information Technology – Portable Operating System Interface (POSIX), The Open Group Base Specifications Issue 7, 2018 Edition. Copyright © 2018 IEEE och The Open Group.
Vid skillnader gäller originalstandarden som auktoritativ. Den kan erhållas online på: http://www.opengroup.org/unix/online.html
Sidslut
Orginalhemsidan på Engelska : https://man7.org/linux/man-pages/man1/wait.1p.html
Det här är en maskinöversättning av Linux man sidor till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på
https://www.linux.se/kontaka-linux-se/
Tack till Datorhjälp som har sponsrat Linux.se med webbhotell.