Здравствуйте, помогите переделать задачку. Задание:с помощью команды write() попытка записать в канал связи меньше байт, чем осталось до его заполнения. Ьез блокировок. Исходная задачка ниже.
С помощью команды WRITE(): Попытка записать в канал связи больше байт, чем осталось до его заполнения. Блокировка вызова разрешена.
Код:
#include <fcntl.h>
#include <sys/types.h>
#include <stdio.h>
#include <unistd.h>
#include <errno.h>
int main()
{
size_t n,m;
int flags, buf=8192;
char str[15]="abc";
int fd[2];
f(pipe(fd)<0)
{
printf("Pipe not created!\n");
};
printf("Pipe created!\n");
if ((flags=fcnt(fd[0], F_GETFL,0))<0
printf("Get flags not succes!\n");
flags &=~O_Nonblock;
if(fcnt(fd[0],F_SETFL, flags)<0)
printf("Set flags succes!\n);
int i;
for (i=0; i<(buf+2); i++)
n = write(fd[1], str, 1);
if (errno == EWOULDBLOCK)
{
printf("Write not succes: no more space in pipe\n");
exit(-1);
}
close(fd[1]);
printf("/nClosed file succes\n");
}
Заранее спасибо))