Для моего класса ОС у меня есть назначение реализации команды cat для Unix с системными вызовами (без scanf или printf). Вот что я получил до сих пор:Использование системных вызовов для реализации команды unix cat
(Отредактированный благодаря ответам)
#include <sys/types.h>
#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
main(void)
{
int fd1;
int fd2;
char *buffer1;
buffer1 = (char *) calloc(100, sizeof(char));
char *buffer2;
buffer2 = (char *)calloc(100, sizeof(char));
fd1 = open("input.in", O_RDONLY);
fd2 = open("input2.in", O_RDONLY);
while(eof1){ //<-lseek condition to add here
read (fd1, buffer1, /*how much to read here?*/);
write(1, buffer1, sizeof(buffer1)-1);
}
while (eof2){
read (fd2,buffer2, /*how much to read here?*/);
write(1, buffer2, sizeof(buffer2)-1);
}
}
примеров, которые я видел только показать прочтение с известным числом байт. Я не знаю, сколько байтов будет иметь каждый из файлов чтения, так как я могу указать последний параметр прочтения чтения?
Мой [ответ] (http://stackoverflow.com/questions/3866217/how-can-i-make-the-system-call-write-print-to-the-screen/3866557#3866557) на ваш [предыдущий вопрос] (http://stackoverflow.com/questions/3866217/how-can-i-make-the-system-call-write-print-to-the-screen) может быть уместным в вашем стремлении реализовать * cat *, используя только системные вызовы. – jschmier