Я прохожу курс по операционным системам, и мы должны научиться использовать каналы для передачи данных между процессами.
Нам дали этот простой кусок кода, который демонстрирует, как использовать каналы, но мне трудно это понять.
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
main()
{
int pipefd [2], n;
char buff[100] ;
if( pipe( pipefd) < 0)
{
printf("can not create pipe \n");
}
printf("read fd = %d, write fd = %d \n", pipefd[0], pipefd[1]);
if ( write (pipefd[1],"hello world\n", 12)!= 12)
{
printf("pipe write error \n");
}
if( ( n = read ( pipefd[0] , buff, sizeof ( buff) ) ) <= 0 )
{
printf("pipe read error \n");
}
write ( 1, buff, n ) ;
exit (0);
}
Что делает функция записи? Похоже, что данные отправляются в канал, а также выводятся на экран (по крайней мере, во второй раз вызывается функция записи, которая делает это).
Есть ли у кого-нибудь предложения о хороших веб-сайтах для изучения таких тем, как эта, FIFO, сигналы, другие основные команды Linux, используемые в C?