ВУЗ:
Составители:
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
- …
- следующая ›
- последняя »