// Неименованные каналы в Linux // Программа из учебника "Системное программирование в среде Linux", Гунько А.В., стр. 74 // Название: mainpopen.c // Описание: каскадирование процессов функцией popen //pipe/mainpopen.с #include #include #include #include #include #include #include #include #include #define MAXLINE 80 int main(int argc, char **argv) { size_t n; char buff[MAXLINE], command[MAXLINE]; FILE *fp; /* считывание полного имени */ fgets(buff, MAXLINE, stdin); n = strlen(buff); /* fgets() гарантирует завершающий ноль */ if (buff[n-1] == '\n') n--; /* удаление перевода строки из возврата fgets() */ snprintf(command, sizeof(command), "cat %s", buff); fp = popen(command, "r"); /* копирование из канала в стандартный вывод */ while (fgets(buff, MAXLINE, fp) != NULL) fputs(buff, stdout); pclose(fp); exit(0); }