Torna indietro   Hardware Upgrade Forum > Software > Programmazione

TCL P80 Ultra: con un display AMOLED opaco è una gioia per gli occhi e per le dita
TCL P80 Ultra: con un display AMOLED opaco è una gioia per gli occhi e per le dita
TCL P80 Ultra abbina per la prima volta un pannello AMOLED alla tecnologia NXTPAPER con finitura opaca, affiancandoci una fotocamera periscopica da 50 MP con zoom ottico 3x, il SoC Dimensity 7400 Elite e una batteria da 5.800 mAh. Nella prova sul campo emergono luminosità di picco molto elevata, comparto fotografico solido per la fascia di prezzo e autonomia nella media, a fronte di velocità di scrittura dello storage piuttosto contenute
HUAWEI MatePad Air recensione: OLED opaco e tastiera dedicata per lavorare meglio
HUAWEI MatePad Air recensione: OLED opaco e tastiera dedicata per lavorare meglio
HUAWEI MatePad Air combina diverse carte molto interessanti: un OLED PaperMatte da 12 pollici, un corpo sottile e una tastiera molto comoda. Durante la prova abbiamo apprezzato fluidità, audio e comfort visivo, mentre i test hanno chiarito pregi e qualche limite nelle prestazioni. L'autonomia ha convinto anche nell'uso intermittente; la scelta passa dalla compatibilità delle proprie app e dal valore del pacchetto con accessori, proposto a 749 euro
NVIDIA RTX Spark: il PC Windows on ARM costruito per l'IA agentica
NVIDIA RTX Spark: il PC Windows on ARM costruito per l'IA agentica
Debuttano ufficialmente i primi sistemi notebook basati su piattaforma NVIDIA RTX Spark, abbinati a Windows on ARM e pensati per l'intelligenza artificiale agentica. Architettura integrata tra CPU e GPU che condividono la memoria di sistema, capace di gestire in locale modelli molto grandi ma al contempo anche di spiccare con la grafica e l'elaborazione
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 13-02-2011, 12: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, 14: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, 14: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 15:08.
DP1991 è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2011, 15: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 15:19.
tuccio` è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2011, 15: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, 15: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, 15: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 15:46.
tuccio` è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2011, 15: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, 15: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, 15: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, 16: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, 16: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


TCL P80 Ultra: con un display AMOLED opaco è una gioia per gli occhi e per le dita TCL P80 Ultra: con un display AMOLED opaco &egra...
HUAWEI MatePad Air recensione: OLED opaco e tastiera dedicata per lavorare meglio HUAWEI MatePad Air recensione: OLED opaco e tast...
NVIDIA RTX Spark: il PC Windows on ARM costruito per l'IA agentica NVIDIA RTX Spark: il PC Windows on ARM costruito...
Motorola razr fold, dalla conchiglia al formato a libro. La recensione Motorola razr fold, dalla conchiglia al formato ...
Recensione Google Pixel Watch 5: sembra lo stesso, ma al polso la differenza si sente Recensione Google Pixel Watch 5: sembra lo stess...
Giochi Xbox One girano su iPhone in mani...
Google Cloud Londra in errore su 36 prod...
Claude Code trova un miner nascosto nel ...
Le offerte Amazon di oggi: caricatore Ga...
Litografia EUV, la Cina mostra una sorge...
Funzionari di Trump hanno chiesto a CISA...
La bolla dell'IA nasconde un trucco: son...
Il solare supera il nucleare nella produ...
Apple punta sull'intelligenza artificial...
A Firenze Huawei prepara la rete al traf...
Call of Duty: Modern Warfare 4 conquista...
Uncharted arriva su PC con un porting no...
Autistici/Inventati, sequestrato un serv...
Google Home Speaker scarica centinaia di...
Arriva nel 2027 il robot umanoide che la...
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: 14:02.


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