Модераторы: powerfox, ZeeLax
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> программный запуск команд 
:(
    Опции темы
kuvshinka
Дата 14.1.2010, 23:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 27.4.2008

Репутация: нет
Всего: нет



подскажите пож-та можно ли (как именно) программно (например из Qt-программы или откуда-то еще) запускать линукс-команды (например cd papka1, pwd и др.) ? (как я бы запускала их "вручную" из терминала)
PM MAIL   Вверх
djamshud
Дата 14.1.2010, 23:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 14
Всего: 39



Самое простое - system. Эмитирует запуск с терминала.


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
bilbobagginz
Дата 14.1.2010, 23:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

Репутация: 113
Всего: 317



kuvshinka
в зависимости от я.п., потребностей надо определиться либо
  • вызывать системные вызовы самому (для чего стоит познакомиться с функциями библиотеки системных вызовов <unistd.h>)
  • либо запускать сыновний процесс посредством system() и его альтернативы.

напр. гулять по каталогам можно вызовом chdir(), проверять разрешения файла вызовом access(), fstat() и т.д.
для чтения юзать read(), для писания - write().





--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
ZeeLax
Дата 15.1.2010, 07:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 4388
Регистрация: 20.8.2006
Где: Алма-Ата

Репутация: 26
Всего: 88



djamshudИмитирует.


--------------------
Utility is when you have one telephone, luxury is when you have two, opulence is when you have three — and paradise is when you have none.
— Doug Larson
PM MAIL WWW ICQ Skype Jabber   Вверх
djamshud
Дата 15.1.2010, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 14
Всего: 39



ZeeLax, во я лох то!

ЗЫ, спасибо.


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
kuvshinka
Дата 15.1.2010, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 27.4.2008

Репутация: нет
Всего: нет



что за system, функция или что? подскажите ссылки (а может быть и книги) где можно "познакомиться с функциями библиотеки системных вызовов <unistd.h>" (про system в основном)
я.п. - С++...поэтому и спрашивала про Qt- она же вроде мультиплатформенная...вот и хотелось бы написать с ее помощью приложение с GUI, где например по кнопке выполнялось бы копирование (ср) файла, удаление (rm) и т.п.- как будто бы из терминала...  
PM MAIL   Вверх
djamshud
Дата 15.1.2010, 20:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 14
Всего: 39



kuvshinka, cp и rm - не кроссплатформенно! Вам нужно почитать кутешную документацию по QFile, никаких внешних программ вызывать не придется.

ЗЫ. man system <- из консоли, если все же интересно.

Добавлено через 1 минуту и 12 секунд
ЗЗЫ. Сам вызов system кроссплатформенный.


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
kuvshinka
Дата 18.1.2010, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 27.4.2008

Репутация: нет
Всего: нет



подскажите пож-та:
1. пример вызова system? например программный вызов ls-l... 
2. как можно из скрипта вывести ошибку его работы (если она есть) в окошко (аля как если бы я вводила данную неверную команду в терминале и получила бы ответ) 
PM MAIL   Вверх
djamshud
Дата 18.1.2010, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 14
Всего: 39



1.
Код

#include<stdlib.h>

int main(){
system("ls -l");
return 0;
}


2. Из скрипта в окошко - плохая идея. Лучше просто пернуть код ошибки:
в bash:
Код

exit 1

1 или любое число не равное нулю - код ошибки. Ноль считается нормальным завершением программы (скрипта).

Это сообщение отредактировал(а) djamshud - 18.1.2010, 15:58


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
kuvshinka
Дата 18.1.2010, 23:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 27.4.2008

Репутация: нет
Всего: нет



djamshud:
1. спасибо. я думала ее прямо в терминале можно использовать...не поняла сразу.... 
2. да, но как я по коду ошибки узнаю что за ошибка? и куда он выведется? ведь если я запускаю скрипт простым щелчком мыши по нему (а не через терминал (bash)), то никаких признаков неверности его отработки нет (а мне надо знать в чем именно произошла ошибка в скрипте...) - поэтому про окошко и был вопрос...
PM MAIL   Вверх
kuvshinka
Дата 19.1.2010, 20:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 27.4.2008

Репутация: нет
Всего: нет



ну плииииииз подскажите...........
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Linux/UNIX: Oбщие вопросы"
nickless
Imple
nerezus

В тему здесь вопросы общие - не привязанные к определенному ПО или дистрибутиву BSD/Linux/UNIX.
Например вопросы о выборе ОС для определенных задач (но если Вы просто хотите узнать "Какой дистрибутив лучше", то для этого есть Клуб юнуксоидов).
Общие вопросы по shell-программированию тоже лучше задавать здесь.


  • Вопросы мобильной разработки тут
  • Вы должны соблюдать правила форума.
  • Помните: какой вопрос, такой и ответ. Прежде чем задать вопрос прочитайте вот эту статью на форуме CIT.
  • Оскорблять запрещается.
  • Религиозные войны в Религиозных войнах.
  • Общение "просто так" в Клубе юнуксоидов. В отличие от многих других разделов, здесь разрешается сдержанно оффтопить и юморить в тему.

За интересные статьи, находки, решения, программы и просто реальную помощь будут ставиться + в репу).


В данный момент этот раздел модерируют nerezus, nickless, powerfox, pythonwin, Imple и ZeeLax. Если вы хотите помочь нам, пишите в ПМ и мы обсудим.


Спасибо. И use UNIX or die; С уважением, nerezus, nickless, powerfox, pythonwin, Imple, ZeeLax.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | *NIX системы: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0831 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.