Ich schreibe die folgenden Codes und führen Sie es in meinem Linux.Jede Zeit nach Gabel drucken die Terminals zwei PID, die zeigt beide Prozesse werden von der OS geplant, und dann ist es Zeit für "scanf" auszuführen, beide Prozesse sind blockiert warten für die Eingabe.Jedoch jedes Mal, wenn ich eine Nummer, und dann bekomme ich die gleiche PID auf dem Terminal gedruckt. Bedeutet dies, dass derselbe Prozess vom Betriebssystem aufgerufen wird, wenn sich ein Terminal IO trifft oder etwas anderes passiert?etwas über den Ablaufplan von OS?
int main(int argc, char* argv[])
{
int num;
if(fork() >= 0)
{
printf("%x\n",getpid());
while(1)
{
if(scanf("%d",&num) != EOF)
{
printf("%x\n",getpid());
}
}
}
printf("\nit is over:%x\n", getpid());
}
Sie gruppieren den Testfall, ob Sie sich im übergeordneten Prozess und im untergeordneten Prozess befinden. 'fork()' gibt die PID des Kindprozesses an den Elternknoten (> 0) zurück und 'fork()' gibt 0 an das Kind zurück. –