Перенаправить стандартный ввод во временный файл?

Я хочу, чтобы stdin был перенаправлен на строку текста, поставляемую в моей программе. Я хочу записать строку текста во временный файл, а затем указать stdin на этот файл. Я немного не уверен в этом коде, потому что он, кажется, смешивает вызовы функций низкого уровня, такие как write() а также dup() с вызовами функций более высокого уровня, таких как fclose(), Это правильный подход?

char* buffer = "This is some text";
int nBytes = strlen(buffer);
FILE* file = tmpfile();
int fd = fileno(file);
write(fd,buffer,nBytes);
rewind(file);
dup2(fd,0);
fclose(file);

РЕДАКТИРОВАТЬ

Согласно предложению в комментариях, я попытался подойти к этой проблеме с трубами. Если я хочу использовать трубы, это будет правильный подход? Я все еще хочу отзывы о первом подходе:

int fd[2];
pipe(fd); // For sake of simplicity assume returns 0 (no error).
char* buffer = "This is some text";
int nBytes = strlen(buffer);
write(fd[1],buffer,nBytes);
close(fd[1]);
dup2(fd[0],0);
close(fd[0]);

0 ответов

Другие вопросы по тегам