@LosGnidoS

Как передать содержимое файла другому процессу через именованный канал? И вывести в файл?

Создал именованный канал и передал в него строку посредством этих 2 програм:
#include <stdio.h>
#include <sys/stat.h>
#include <string.h>
#include <stdlib.h>
#include <fcntl.h>

#define FIFO_NAME "myfifo"
#define BUF_SIZE 512
int main (void)
{
	FILE * fifo;
	char * buf;
	if (mkfifo ("myfifo", 0640) == -1) {
		fprintf (stderr, "Can't create fifo\n");
		return 1;
	}
	fifo = fopen (FIFO_NAME, "r");
	if (fifo == NULL) {
		fprintf (stderr, "Cannot open fifo\n");
		return 1;
	}
	buf = (char *) malloc (BUF_SIZE);
	if (buf == NULL) {
		fprintf (stderr, "malloc () error\n");
		return 1;
	}
	fscanf (fifo, "%s", buf);
	printf ("%s\n", buf);
	fclose (fifo);
	free (buf);
	unlink (FIFO_NAME);
	return 0;
}


#include <stdio.h>
#include <fcntl.h>
#include <string.h>
#include <stdlib.h>
#include <sys/stat.h>

#define FIFO_NAME "myfifo"

int main (int argc, char ** argv)
{
	int fifo;
	
	if (argc < 2) {
		fprintf (stderr, "Too few arguments\n");
		return 1;
	}
	fifo = open (FIFO_NAME, O_WRONLY);
	if (fifo == -1) {
		fprintf (stderr, "Cannot open fifo\n");
		return 1;
	}
	if (write (fifo, argv[1], strlen (argv[1])) == -1) {
		fprintf (stderr, "write() error\n");
		return 1;
	}
	close (fifo);
	return 0;
}


Я понимаю, как вывести в канал строку из терминала, но, не понимаю , как осуществить чтение содержимого файла , передать в FIFO и в дальнейшем записать в другой файл. Как это осуществить?
  • Вопрос задан
  • 107 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы