В моята работна програма по-долу бих искал да разбера,
Как/кой е установил (създал) еднотръбна комуникация между дескриптора {child's pair[1]} и дескриптора {parent's pair[0]}?
Тъй като в моята програма по-долу, аз просто fork()'d процес и веднага кой е установил тръбна връзка между дескриптора {child's pair[1]} и дескриптора {parent's pair[0]}? Смятате ли, че е очевидно да приемете тази точка?
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <sys/types.h>
#include <unistd.h>
int main(void)
{
int pair[2];
char buf[30] ="";
pipe(pair);
if (!fork()) {
printf(" CHILD: writing to the pipe\n");
write(pair[1], "test", 5);
printf(" CHILD: exiting\n");
exit(0);
} else {
printf("PARENT: reading from pipe\n");
read(pair[0], buf, 5);
wait(NULL);
printf(" PARENT: exiting\n");
}
return 0;
}
Моля, помогни ми!!
pipe
установи тази комуникация между дескриптораpair[1]
на родителя и дескриптораpair[0]
на родителя. След товаfork()
създава дете и неговиятpair[1]
дескриптор (и за този въпросpair[0]
дескриптор, но това не е от значение) се споделя с неговия родител. Следователноpair[1]
на детето е свързано сpair[0]
на родителя чрез тръбата. Не съм сигурен какво имате предвид под „мислите ли, че е очевидно“. Очевидно е за някой, който се занимава с програмиране на C socket от 20 години, но може би не и за новодошъл; няма срам нещата да не са очевидни. 24.02.2014