Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Получить вывод команды оболочки - функция, обратная system() - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как можно упростить exp^CA (если вводимые числа 5 и 4) http://www.cyberforum.ru/cpp-beginners/thread513306.html
Дана функция: Как можно упростить exp^CA(если вводимые числа 5 и 4), т.е C*A = 20 exp^20, не вводить ведь exp 20 раз Возможно ли упрощение данной формулы?
C++ Программирование рекурсий. Преобразование числа в двоичное Дано целое неотрицательное число n. Преобразовать его в двоичное число. http://www.cyberforum.ru/cpp-beginners/thread513279.html
C++ Отсортировать элементы, предшествующие первому нулевому элементу по возрастанию
Дан массив А(50). Отсортировать элементы, предшествующие первому нулевому элементу, по возрастанию алгоритмом «Сортировка вставками».
C++ Программирование рекурсий: отделить цифры данного числа и сложить межу собой
Дано целое неотрицательное число n. Отделить цифры данного числа и сложить межу собой.
C++ Найти минимальный и максимальный элементы массива и упорядочить элементы по убыванию http://www.cyberforum.ru/cpp-beginners/thread513273.html
Дан массив А(40). Найти минимальный и максимальный элементы массива и упорядочить элементы по убыванию, стоящие между ними, методом «пузырька».
C++ Найти два таких два таких элемента, разность модулей которых имеет максимальное значение в целочисленном массиве найти два таких два таких элемента,разность модулей котооых имеет максимальное значение, и удалить из их состава массива. подробнее

Показать сообщение отдельно
Nameless One
Эксперт С++
5773 / 3424 / 255
Регистрация: 08.02.2010
Сообщений: 7,447
06.03.2012, 14:01
В линуксе можно сделать так:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <stdio.h>
#include <stdlib.h>
 
int main (int argc, char* argv [])
{
    FILE* pipe;
 
    char buf [BUFSIZ];
 
    if (argc != 2)
    {
    fprintf (stderr, "Usage: %s COMMAND\n", argv [0]);
    exit (1);
    }
    
    printf ("Trying to execute command `%s'\n", argv [1]);
 
    if ((pipe = popen (argv [1], "r")) == NULL)
    {
    perror (argv [1]);
    exit (1);
    }
 
    while (fgets (buf, BUFSIZ, pipe) != NULL)
    printf ("Got line: %s", buf);
 
    if (ferror (pipe))
    perror (argv [1]);
 
    pclose (pipe);
 
    exit (0);
}
Открываем пайп и читаем из него как из файла.

Код
[nameless@desktop c]$ ./sample 'ls -l'
Trying to execute command `ls -l'
Got line: итого 32
Got line: -rw-rw-r--. 1 nameless nameless   527 марта  6 20:59 main.c
Got line: -rw-rw-r--. 1 nameless nameless   854 марта  6 18:27 main.c~
Got line: -rw-rw-r--. 1 nameless nameless  6768 марта  6 20:59 main.o
Got line: -rw-rw-r--. 1 nameless nameless   302 марта  2 13:05 Makefile
Got line: -rwxrwxr-x. 1 nameless nameless 10295 марта  6 20:59 sample
[nameless@desktop c]$
4
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru