ВУЗ:
Составители:
37
В случае возникновения ошибки функция возвращает нулевой указатель. Это
может случиться в следующих случаях: если канал или поток не могут быть созданы,
если не может быть создан порожденный процесс или если программа не может быть
выполнена.
int pclose(FILE *STREAM)
Функция используется для закрытия потока, созданного функцией popen. Она
ожидает, пока не завершится порожденный поток и возвращает его статус, аналогичный
возвращаемому функцией system.
Приведем пример использования popen и pclose для фильтрации вывода через
другую программу (в данном случае – more).
#include <stdio.h>
#include <stdlib.h>
void
write_data (FILE * stream)
{
int i;
for (i = 0; i < 100; i++)
fprintf (stream, "%d\n", i);
if (ferror (stream))
{
fprintf (stderr, "Output to stream failed.\n");
exit (EXIT_FAILURE);
}
}
int
main (void)
{
FILE *output;
output = popen ("more", "w");
if (!output)
{
fprintf (stderr, "Could not run more.\n");
return EXIT_FAILURE;
}
write_data (output);
pclose (output);
return EXIT_SUCCESS;
}
FIFO-файлы
FIFO-файлы схожи с каналами, однако создаются другим способом. FIFO-
файлы создаются в файловой системе с помощью функции mkfifo. После создания
такого файла, любой процесс может открыть его для чтения и записи таким же
способом, как и обычный файл. Тем не менее, он должен быть открыт и записывающим
и читающим процессом прежде, чем можно будет записывать и читать из него данные.
Функция mkfifo определена в заголовочном файле <sys/stat.h>:
int mkfifo(const char *FILENAME, mode_t MODE)
Функция mkfifo создает FIFO-файл с именем FILENAME. Аргумент MODE
задает маску доступа к файлу, идентичную используемой при создании обычного
файла.
При успешном выполнении функции функция возвращает 0, в случае ошибки
возвращается –1, а переменная errno в кроме ошибок, связанных с именем файла, может
принимать следующие значения:
В случае возникновения ошибки функция возвращает нулевой указатель. Это
может случиться в следующих случаях: если канал или поток не могут быть созданы,
если не может быть создан порожденный процесс или если программа не может быть
выполнена.
int pclose(FILE *STREAM)
Функция используется для закрытия потока, созданного функцией popen. Она
ожидает, пока не завершится порожденный поток и возвращает его статус, аналогичный
возвращаемому функцией system.
Приведем пример использования popen и pclose для фильтрации вывода через
другую программу (в данном случае – more).
#include
#include
void
write_data (FILE * stream)
{
int i;
for (i = 0; i < 100; i++)
fprintf (stream, "%d\n", i);
if (ferror (stream))
{
fprintf (stderr, "Output to stream failed.\n");
exit (EXIT_FAILURE);
}
}
int
main (void)
{
FILE *output;
output = popen ("more", "w");
if (!output)
{
fprintf (stderr, "Could not run more.\n");
return EXIT_FAILURE;
}
write_data (output);
pclose (output);
return EXIT_SUCCESS;
}
FIFO-файлы
FIFO-файлы схожи с каналами, однако создаются другим способом. FIFO-
файлы создаются в файловой системе с помощью функции mkfifo. После создания
такого файла, любой процесс может открыть его для чтения и записи таким же
способом, как и обычный файл. Тем не менее, он должен быть открыт и записывающим
и читающим процессом прежде, чем можно будет записывать и читать из него данные.
Функция mkfifo определена в заголовочном файле :
int mkfifo(const char *FILENAME, mode_t MODE)
Функция mkfifo создает FIFO-файл с именем FILENAME. Аргумент MODE
задает маску доступа к файлу, идентичную используемой при создании обычного
файла.
При успешном выполнении функции функция возвращает 0, в случае ошибки
возвращается –1, а переменная errno в кроме ошибок, связанных с именем файла, может
принимать следующие значения:
37
Страницы
- « первая
- ‹ предыдущая
- …
- 35
- 36
- 37
- 38
- 39
- …
- следующая ›
- последняя »
