wait(1p): Skillnad mellan sidversioner

Från Wiki.linux.se
Hoppa till navigering Hoppa till sök
(Skapade sidan med '= wait(1p) = == NAMN == wait — vänta på att processer avslutas == SYNOPSIS == <pre> wait [pid...] </pre> == 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 ä...')
(Ingen skillnad)

Versionen från 29 augusti 2025 kl. 06.44

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.