Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Sony Alpha 7 V, anteprima e novità della nuova 30fps, che tende la mano anche ai creator
Sony Alpha 7 V, anteprima e novità della nuova 30fps, che tende la mano anche ai creator
Dopo oltre 4 anni si rinnova la serie Sony Alpha 7 con la quinta generazione, che porta in dote veramente tante novità a partire dai 30fps e dal nuovo sensore partially stacked da 33Mpixel. L'abbiamo provata per un breve periodo, ecco come è andata dopo averla messa alle strette.
realme GT 8 Pro Dream Edition: prestazioni da flagship e anima racing da F1
realme GT 8 Pro Dream Edition: prestazioni da flagship e anima racing da F1
realme e Aston Martin Aramco F1 Team si sono (ri)unite dando alla vita un flagship con chip Snapdragon 8 Elite Gen 5 e design esclusivo ispirato alle monoposto di Formula 1. La Dream Edition introduce la nuova colorazione Lime Essence abbinata al tradizionale Aston Martin Racing Green, decorazioni intercambiabili personalizzate e una confezione a tema F1, intorno a uno smartphone dall'ottima dotazione tecnica con batteria da 7000mAh ricaricabile a 120W e isola fotografica intercambiabile
OVHcloud Summit 2025: le novità del cloud europeo tra sovranità, IA e quantum
OVHcloud Summit 2025: le novità del cloud europeo tra sovranità, IA e quantum
Abbiamo partecipato all'OVHcloud Summit 2025, conferenza annuale in cui l'azienda francese presenta le sue ultime novità. Abbiamo parlato di cloud pubblico e privato, d'intelligenza artificiale, di computer quantistici e di sovranità. Che forse, però, dovremmo chiamare solo "sicurezza"
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 13-02-2011, 13:13   #1
DP1991
Junior Member
 
Iscritto dal: Feb 2011
Messaggi: 7
[C] Domanda sulla funzione wait()

Salve a tutti, è la prima volta che scrivo in questo forum anche se seguo da molti anni il sito.

Avrei gentilmente bisogno, abbastanza urgentemente poichè domani ho un esame (non vi nascondo che ho già chiesto anche da altre parti), di un aiuto su un esercizio.

Devo stabilire l'output di un programma e dire se quell'output è l'unico possibile.
La mia domanda è: il wait() aspetta che una diramazione QUALSIASI del figlio finisca oppure aspetta necessariamente figlio->figlio, non facendo fare altro al figlio->padre?

In pratica il programma stampa, nelle varie prove che ho fatto:
1 2 3 4 4 3 4
oppure (non sul mio pc, ma su quello di un amico)
1 2 3 4 3 4 4

Quello che cercavo di dire prima è se è possibile che il programma stampi
1 2 3 3 4 4 4, ovvero può il processo figlio->padre stampare il 3 prima che il processo figlio->figlio finisca?


Il programma che mi ha fatto sorgere il dubbio è il seguente:

codice:
Codice:
#include <stdio.h> 
#include <unistd.h> 
int main() 
{ 	
      printf ("1\n"); 	
      if (fork()==0) 
       { 		
              printf ("2\n"); 		
              fork(); 		
              printf ("3\n"); 	
        }else 		
               wait(); 	 	
        printf ("4\n"); 
}


Ringrazio già in anticipo chiunque mi risponderà!
Ciao!
DP1991 è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2011, 15:32   #2
tuccio`
Senior Member
 
Iscritto dal: Apr 2010
Città: Frosinone
Messaggi: 416
la wait si sblocca quando termina un figlio (a dire il vero si sblocca anche quando vieni interrotto da un segnale, cosa che non controlli, e poi mancano un po' di wait per evitare gli zombie)

in pratica la wait che c'è lì si sblocca solo quando è terminato il processo generato dalla prima fork
tuccio` è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2011, 15:52   #3
DP1991
Junior Member
 
Iscritto dal: Feb 2011
Messaggi: 7
Ti ringrazio, ma non mi hai detto niente di nuovo!
Io volevo sapere in pratica se può essere stampato 1 2 3 3 4 4 4...
O meglio, so che si blocca quando termina il processo della prima fork(), ma dato che questo processo si duplica ancora, vorrei sapere se a finire e a sbloccare la wait() è il processo figlio->figlio, senza che il processo figlio->padre possa stampare qualcosa nel mentre. Con altre parole ancora, la wait() agisce anche sul figlio->padre?

Ultima modifica di DP1991 : 13-02-2011 alle 16:08.
DP1991 è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2011, 16:12   #4
tuccio`
Senior Member
 
Iscritto dal: Apr 2010
Città: Frosinone
Messaggi: 416
forse non è chiaro, si sblocca se termina un figlio, non un nipote

infatti dovresti fare la wait nel primo figlio per non avere il nipote zombie

comunque quella stampa puoi averla

p1: stampa 1
p1: fork() e genera p2
p1: stampa wait() e si blocca
p2: stampa 2
p2: fork() e genera p3
p2: stampa 3
p3: stampa 3
p3: stampa 4
p3: termina
p2: stampa 4
p2: termina
p1: stampa 4
p1: termina

è uno schedule legale

Ultima modifica di tuccio` : 13-02-2011 alle 16:19.
tuccio` è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2011, 16:24   #5
DP1991
Junior Member
 
Iscritto dal: Feb 2011
Messaggi: 7
Ok, però allora perchè mi stampa 1 2 3 4 4 3 4??

Il secondo 4 è sicuramente quello del padre, quindi vuol dire che la wait si sblocca quando termina un "nipote", no??
DP1991 è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2011, 16:25   #6
DP1991
Junior Member
 
Iscritto dal: Feb 2011
Messaggi: 7
Io graficamente la vedo così:



Uploaded with ImageShack.us
DP1991 è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2011, 16:43   #7
tuccio`
Senior Member
 
Iscritto dal: Apr 2010
Città: Frosinone
Messaggi: 416
Quote:
Originariamente inviato da DP1991 Guarda i messaggi
Ok, però allora perchè mi stampa 1 2 3 4 4 3 4??

Il secondo 4 è sicuramente quello del padre, quindi vuol dire che la wait si sblocca quando termina un "nipote", no??
il secondo 4 non è per forza quello del padre, il fatto che figlio1 termini, permette al padre di sbloccarsi, ma non deve sbloccarsi per forza appena termina, è un'assunzione che non puoi fare

l'unica cosa che puoi dire lì è che figlio1 termina prima di padre, il 4 del padre può essere anche l'ultimo stampato, perché può terminare per ultimo

ps: se a te stampa la stessa cosa è per come ragiona il tuo scheduler, il punto è solo che quello schedule non viene meno a nessun vincolo "di precedenza" (nel tuo caso c'è solo che figlio1 deve terminare prima che padre stampi 4), quindi è legale

Ultima modifica di tuccio` : 13-02-2011 alle 16:46.
tuccio` è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2011, 16:49   #8
DP1991
Junior Member
 
Iscritto dal: Feb 2011
Messaggi: 7
Capisco quello che mi stai dicendo, ma io sono abbastanza sicuro che quello è il 4 del padre, perchè altrimenti dovrebbe avere davanti un 3, non credi? Il 4 dovrebbe essere sempre preceduto dal 3 a meno che non sia il 4 del padre oppure 3344...
DP1991 è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2011, 16:53   #9
tuccio`
Senior Member
 
Iscritto dal: Apr 2010
Città: Frosinone
Messaggi: 416
ah sì nel tuo caso sì, ovviamente, pensavo parlassi di "1233444"
tuccio` è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2011, 16:57   #10
DP1991
Junior Member
 
Iscritto dal: Feb 2011
Messaggi: 7
Ok, penso sia chiaro ora.

Un'ultima cosa per ora, lo schema che ho postato è giusto secondo te? O meglio, è corretto vederla così, o c'è qualche errore logico?
DP1991 è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2011, 17:03   #11
tuccio`
Senior Member
 
Iscritto dal: Apr 2010
Città: Frosinone
Messaggi: 416
dipende, come devo interpretare 2 comandi che stanno sulla stessa riga?
tuccio` è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2011, 17:13   #12
DP1991
Junior Member
 
Iscritto dal: Feb 2011
Messaggi: 7
Be, secondo quello che mi hai detto tu vanno "a caso", mentre io prima credevo facesse prima il ramo figlio1->figlio2 e poi padre e figlio->padre2 a caso...
DP1991 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Sony Alpha 7 V, anteprima e novità della nuova 30fps, che tende la mano anche ai creator Sony Alpha 7 V, anteprima e novità della ...
realme GT 8 Pro Dream Edition: prestazioni da flagship e anima racing da F1 realme GT 8 Pro Dream Edition: prestazioni da fl...
OVHcloud Summit 2025: le novità del cloud europeo tra sovranità, IA e quantum OVHcloud Summit 2025: le novità del cloud...
Un mostro da MSI: QD-OLED WQHD a 500 Hz con AI Care e DisplayPort 2.1a Un mostro da MSI: QD-OLED WQHD a 500 Hz con AI C...
DJI Neo 2 in prova: il drone da 160 grammi guadagna il gimbal e molto altro DJI Neo 2 in prova: il drone da 160 grammi guada...
AWS rinnova lo stack dell’IA: Trainium3,...
AWS entra nell'era degli agenti: il keyn...
Roscosmos: inventario a bordo della ISS ...
Arduino viene acquisita da Qualcomm e ca...
Un razzo spaziale Arianespace Vega C ha ...
Terra Next dà il via a Scale-Up P...
Il veicolo riutilizzabile ESA Space Ride...
Un Mousepad per mirare meglio: uno youtu...
Tokyo Electron sotto accusa: Taiwan cont...
L'ESA sta cercando alternative all'utili...
iliad TOP 250 PLUS e TOP 300 PLUS: valan...
FRITZ! a Sicurezza 2025: connessioni WiF...
I 18enni di oggi non fanno più la...
Super offerte Apple: iPhone 16e a 529€ e...
Torres EVT arriva in Italia con listino ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 22:22.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v