Geçerli değer beklemede() işlevini yazdırmaya çalışıyorum. Çıktıdan ne düşündüğüm, alt işlemin yürütüldüğü zaman çocuk bağlamındaki wait() öğesinin geçerli değeri -1'dir ve tamamlandığında ve döndükten sonra ana bağlamda wait() değeri çocuğun pidine eşittir. Anladığım şey, anladığımdan doğru mu?C programında wait() dönüş değeri()
#include<stdio.h>
#include<stdlib.h>
int main()
{
int statloc;
int stat;
printf("\nthis process id is %d", getpid());
int pid;
pid =fork();
stat=wait(&statloc);
printf("\n Value of stat is %d",stat);
getchar();
}
Çıktı:
this process id is 10740
Value of stat is -1k // k is entered as input due to getchar
this process id is 10740
Value of stat is 10741j // j is entered as input due to getchar
Yalnızca ebeveyn beklemelidir. Ayrıca, fork() 'nın çocuğun içinde döndükten sonra asenkron güvensiz işlevleri çağırması UB olduğunu unutmayın. –
adam bekleyin: "wait(): başarı durumunda, sonlandırılan çocuğun işlem kimliğini döndürür; hatada, -1 döndürülür." – jdarthenay
@KerrekSB: Tamam evet, aptal ben, anlıyorum bekle() iki katın değerinden . Yani benim sorum bekle-çocuk çıkana kadar -1 ve sonra çıkmış çocuğun pidinin değeri var mı? – theartist33