Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Qt и кроссплатформенное программирование С/С++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.06.2013, 15:38   #1
aank10
Пользователь
 
Регистрация: 12.02.2011
Сообщений: 81
По умолчанию Управление программой через терминал ubuntu

Здравствуйте, нужно организовать управление консольного приложение через консоль то есть, сейчас программа работает так
перетащили файл откомпилированной программы в терминал нажали Enter и пользователь переходит в программу , а надо что бы пользователь из консоли выводил путь к программе в конце пути указывал команду, программа её выполнила и вернулась обратно в консоль. Если не понятно объяснил могу выложить скрины сразу не получилось ибо ссылку сменило на звездочки.
aank10 вне форума Ответить с цитированием
Старый 05.06.2013, 18:51   #2
ROD
Linux C++ Qt ARM
Старожил
 
Аватар для ROD
 
Регистрация: 30.11.2008
Сообщений: 3,030
По умолчанию

Вариант 1.

Вы запускаете программу, она берет параметры командной строки.
Она выполняет что-то и закрывается.

Вариант 2. Для эстетов.

Вы запускаете программу как демон.

Вы запускаете программу (еще раз), она берет параметры командной строки.
Она передает (через pipe или D-bus или еще как-нибудь) демону команду и закрывается.
Дилетант широкого профиля.

"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс
ROD вне форума Ответить с цитированием
Старый 06.06.2013, 20:12   #3
aank10
Пользователь
 
Регистрация: 12.02.2011
Сообщений: 81
По умолчанию

А каким образом Вашу идею номер 1 можно применить к этому куску кода
Код:
#include <stdio.h> //стандартный заголовочный файл ввода/вывода
#include <string.h>// .
#include <dirent.h>//
#include <sys/types.h>//
#include <sys/stat.h>//
#include <time.h>//	
#include <iostream> 
#include <stdlib.h>

using namespace std;

int do_ls(char*, char *, char); //функция работы с папкой
void dostat(char*,char*);//функция получения информации о файле (принимает имя файла и директорию)
void show_file_info(char*,struct stat*);// выводим всю информацию об файле (из  переменной info_p )
void mode_to_letters(int,char*);  // формариуем в строке STR права доступа к файлу
char* uid_to_name(uid_t);//преобразование ID пользователя в имя пользователя
//char* gid_to_name(gid_t);
    string key;
    int all=0,pd=0,ks=0,vf=0,rf=0,vs=0,ef=0,dp1,kolich=0;
     char modestr[11];
int main(int ac,char* argv[])
{

    string vubor;
    char a = 0;
    char name[255];// массив символов - хранит имя файла (или директорию)



    // вывод меню и ввод номера.
    cout << "   Что бы приступить к роботе, набери 'help' " << endl;
    m1:
    cin>>vubor;
if (vubor=="help")
{
cout <<"________________________________________"<<endl;
cout <<"indir - сканирование всех файлов в папке из которой запущена программа"<<endl;
cout <<"dir - сканирование файлов в папке по указаному пути"<<endl;
cout <<"help - помощь по программе"<<endl;
cout <<"exit - выход из программы"<<endl;

cout <<"________________________________________"<<endl;

cout <<"Возможные ключи:"<<endl;
cout <<"/all - выводит всю информацию об файлах"<<endl;
cout <<"/d - выводит права доступа к файлу"<<endl;
cout <<"/s - выводит количество ссылок на файл"<<endl;
cout <<"/n - выводит имя владельца файла"<<endl;
cout <<"/r - выводит размер файла"<<endl;
cout <<"/t - выводит время создания файла"<<endl;
cout <<"/  - ввести что б закончить вводить ключи"<<endl;
goto m1;
}

 int count; //счетчик файлов
            // если нужно выводить все файлы директории - имя директории "."
            // а имя файла - пустая строка
            strcpy(name, "."); //копируем имя файла или имя директории
            if(ac==1)
            {
                count = do_ls(name, (char*)"", a); //выполнение функции на проверку существования файлов
            }
            else
            {
                while (--ac)
                {
                  //  cout <<*++argv<<endl;
                    do_ls(*argv, (char*)"", a);//выполнение функции на проверку существования файлов
                }
            }

            cout << "Количество файлов = " << count << endl; //вывод количества файлов в папке

goto m1;
}//////////

if (vubor=="dir")
{

cout<<"-->Введи путь к папке: ";
 int count; //счетчик файлов
            // если нужно выводить все файлы директории - имя директории "."
            // а имя файла - пустая строка
            cin>>name;


    /////////////////
     cout <<"-->Введи ключи"<<endl;

    m4:
    cin>>key;
    if (kolich!=4)
       {
            if (key=="/d")//права доступа
            {
            pd=1;
            kolich=kolich+1;
            goto m4;
            }

            if (key=="/s")//количество ссылок
            {
            ks=1;
            kolich=kolich+1;
            goto m4;
            }

            if (key=="/n")//владелец файла
            {
            vf=1;
            kolich=kolich+1;
            goto m4;
            }

            if (key=="/r")//размер файла
            {
            rf=1;
            kolich=kolich+1;
            goto m4;
            }
            if (key=="/t")//время создания
            {
            vs=1;
            kolich=kolich+1;
            goto m4;
            }

            if (key=="/")
            goto m5;
            if (key=="/all")
            {
            all=1;
            goto m5;
            }
            else
            {
            cout<<"no such key"<<endl;
            goto m4;
                }
       }


m5:


    /////////////////




            if(ac==1)
            {
                count = do_ls(name, (char*)"", a); //выполнение функции на проверку существования файлов
            }
            else
            {
                while (--ac)
                {
                    cout <<*++argv<<endl;
                    do_ls(*argv, (char*)"", a);//выполнение функции на проверку существования файлов
                }
            }

            cout << "Количество файлов = " << count << endl; //вывод количества файлов в папке
goto m1;
}//////////

if (vubor=="exit")
return 0;
else
{
    cout<<"syntax error"<<endl;
    goto m1;
    }

     return 0;
     }
aank10 вне форума Ответить с цитированием
Старый 06.06.2013, 22:08   #4
ROD
Linux C++ Qt ARM
Старожил
 
Аватар для ROD
 
Регистрация: 30.11.2008
Сообщений: 3,030
По умолчанию

Цитата:
Код:
int main(int ac,char* argv[])
Вы получаете в main`е количество строк (параметры, разделенные пробелом) и массив этих строк.
Дилетант широкого профиля.

"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс
ROD вне форума Ответить с цитированием
Старый 06.06.2013, 22:13   #5
aank10
Пользователь
 
Регистрация: 12.02.2011
Сообщений: 81
По умолчанию

нет когда я ввожу путь к программе и через пробел ввожу команду меня просто перекидывает внутрь программы.
я знаю что надо вписать что то типа такого
Код:
if((ac==2)&&(strcmp(*(argv+1),"-a")==0)){
        a=1;
        *++argv;
        --ac;
    }
    if(ac==1)
        do_ls((char*)".",a);
    else{
        while (--ac){
            printf("\33[36;1m%s: \33[0m\n",*++argv);
            do_ls(*argv,a);
        }
aank10 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Управление программой через браузер medved6216 Работа с сетью в Delphi 2 19.02.2013 13:30
Ubuntu 10.10 и установка программ через терминал. Даниил_глазко Linux (Ubuntu, Debian, Red Hat, CentOS, Mint) 2 17.04.2011 21:01
Управление программой через LPT порт firmwares Помощь студентам 12 27.02.2011 00:33
Управление чужой программой через WEB. MethSpeed Безопасность, Шифрование 9 20.07.2008 14:45