См. В Примере 1, родительский процесс вызывается первым, где, как и в Примере 2, дочерний процесс вызывается первым. Я не мог понять это поведение fork().Просьба уточнить.
Example1:
main()
{
int pid;
if((pid=fork())>=0)
{
if(pid)
{
printf("parent\n");
}
else
{
printf("Child\n");
}
}
else
printf("Failed \n");
if(pid)
printf("Parent:After fork call\n");
else
printf("Child:After fork call\n");
}
O/p:-
[home]$ ./a.out
parent
Parent:After fork call
[home]$ Child
Child:After fork call
Пример 2
main()
{
int pid;
if((pid=fork())>=0)
{
if(pid)
{
printf("Parent\n");
system("ls");
}
else
{
system("pwd");
}
}
else
printf("Failed \n");
if(pid)
system("ps");
else
printf("Child:After fork call\n");
}
O/p:-
Parent
/home/neeraj/Vector/OS
Child:After fork call
a.out sendsig sendsig.c test2.c test3.c test.c
PID TTY TIME CMD
1943 pts/0 00:00:00 bash
31719 pts/0 00:00:00 a.out
31720 pts/0 00:00:00 a.out <defunct>
31723 pts/0 00:00:00 ps