Модераторы: xvr
  

Поиск:

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


Опытный
**


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

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



Всем привет! У меня пара вопросов по поводу аргументов. Я искал и не нашел функцию, которая возвращает всю командную строку, как GetCommandLine() под windows. Под линуксом есть /proc/<PID>/cmdline
На Solaris даже его нету.

И кроме того, в /proc/<PID>/cmdline уже нету двойных пробелов, и кавычек. Например, если я набрал в командной строке 
Код

less -S     -i 'test.c' 

, то в файле cmdline будет: 
Код

less -S -i test.c


Получается, что командную строку парсит оболочка, а загрузчику передаётся просто массив с аргументами? Значит получить исходную командную строку нельзя?

PM MAIL   Вверх
Cheloveck
Дата 26.6.2009, 21:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Код

#include <string>

int main( int argc, char **argv )
{
    std::string cmdline("");
    for( int i = 0; i < argc; i++ )
        cmdline += argv[i] + " ";
        
    return 0;
}

А если так?

Это сообщение отредактировал(а) Cheloveck - 27.6.2009, 16:22


--------------------
user posted image
PM Jabber   Вверх
MAKCim
Дата 27.6.2009, 10:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

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



Цитата(leniviy @  26.6.2009,  18:15 Найти цитируемый пост)
Значит получить исходную командную строку нельзя?

да


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
bsa
Дата 2.7.2009, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



Цитата(leniviy @ 26.6.2009,  18:15)
Получается, что командную строку парсит оболочка, а загрузчику передаётся просто массив с аргументами? Значит получить исходную командную строку нельзя?

то, что ты пишешь в командной строке оболочки - это команда оболочки. И она делает с ней все, что угодно. Ты можешь, при желании, написать свою оболочку, которая не будет делать ничего с командной строкой, а просто передавать в качестве первого аргумента вызываемой программе... Но потом поймешь, что зря потерял время, так как это никому не нужно.
Есть ряд символов, которые шеллы обрабатывают особым образом. Например, пробел, кавычки, звездочка, скобки, амперсанд и пр. Чтобы они были переданы программе, надо их экранировать обратным слэшем:
Код
less -S\ \ \ \  -i \'test.c\'
в результате будет:
argv[0] = "less"
argv[1] = "-S    "
argv[2] = "-i"
argv[3] = "'test.c'"

PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




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


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

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