c++ и командная строка
Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain
Подскажите, как обратиться к командной строке, отличной от виндосовской cmd?
Ну, т.е., я хочу чтобы моя программка на c++ обращалась к командной строке gnuplot'а и говорила ему что делать, аналогично функции system.
Заранее спасибо.
Ну, т.е., я хочу чтобы моя программка на c++ обращалась к командной строке gnuplot'а и говорила ему что делать, аналогично функции system.
Заранее спасибо.
- Romeo
- Сообщения: 3126
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
Я правильно понимаю, что ты хочешь обратится к командной строке не своей программы, а какой-то другой? Расскажи ещё более подробно чего именно ты хочешь добиться (лучше всего с примером), а также расскажи что такое gnuplot.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
В общем ситуация следующая.
Нужно, чтобы программа сделала некоторые расчеты и потом вывела график.
Gnuplot - это, как раз, программка с помощью которой не сложно построить график по дискретным данным, которые в процессе выполнения, моя программа записывает в некоторый файл.
В общем написав в конце своей программы эту строчку:
system("start C:\\Program\\Gnuplot\\bin\\wgnuplot");
я тем самым запустил командную строку windows'а (написав system) и запустил с ее помощью gnuplot (ну то есть в отдельном окне windows'а).
Теперь я могу там писать команды, чтобы он построил мой график, использую данные из файла в который они записаны, но это уже не относится к c++ (но если надо могу написать и это).
Дело в том, что он (gnuplot) работает как командная строка, вот я и подумал, что если c++ умеет обращаться к командной строке windows'а, то может, можно ему как-нибудь сказать, чтобы он использовал не ее, а командную строку gnuplot'а.
Таким образом, я бы смог сделать так, чтобы запустив программу c++, она, сделав расчеты, сама открыла бы gnuplot и сама написала бы ему команду, которая построит график.
Если, что могу выложить код программы.
Надеюсь, не очень запутанно объяснил, если, что могу еще раз попробовать
Нужно, чтобы программа сделала некоторые расчеты и потом вывела график.
Gnuplot - это, как раз, программка с помощью которой не сложно построить график по дискретным данным, которые в процессе выполнения, моя программа записывает в некоторый файл.
В общем написав в конце своей программы эту строчку:
system("start C:\\Program\\Gnuplot\\bin\\wgnuplot");
я тем самым запустил командную строку windows'а (написав system) и запустил с ее помощью gnuplot (ну то есть в отдельном окне windows'а).
Теперь я могу там писать команды, чтобы он построил мой график, использую данные из файла в который они записаны, но это уже не относится к c++ (но если надо могу написать и это).
Дело в том, что он (gnuplot) работает как командная строка, вот я и подумал, что если c++ умеет обращаться к командной строке windows'а, то может, можно ему как-нибудь сказать, чтобы он использовал не ее, а командную строку gnuplot'а.
Таким образом, я бы смог сделать так, чтобы запустив программу c++, она, сделав расчеты, сама открыла бы gnuplot и сама написала бы ему команду, которая построит график.
Если, что могу выложить код программы.
Надеюсь, не очень запутанно объяснил, если, что могу еще раз попробовать

- Romeo
- Сообщения: 3126
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
Во-первых, проинвестигейть свой gnuplot на наличие удобных параметров командной строки. Вполне возможно, что он умеет что-нибудь типа wgnuplot @comman_file. Просто очень часто подобные программы позволяют передать им в качестве параметра файл, содержащий список команд, которые следует выполнить.
Во-вторых, если первый вариант не пройдёт, то я поищу пример, который у меня где-то валялся, где на вход запущенной консольной программы подавался сформированный поток.
Во-вторых, если первый вариант не пройдёт, то я поищу пример, который у меня где-то валялся, где на вход запущенной консольной программы подавался сформированный поток.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Да-да, это он умеет (если я правильно понял), в частности именно так я строю нужный мне график. Записываю в файл1 данные, посчитанные программой, а в файл2 соответствующую команду, которая говорит ему построить график, используя файл1. Потом даю ему соответствующую команду в командной строке, которая говорит, чтобы открыл файл2. Но опять же - Я ввожу ему эту команду!
Аааа, или ты имеешь ввиду, что нужно найти файл который он при запуске автоматически читает и туда написать мою команду. Потому, что в начале запуска он сразу пишет некоторый текст?!
Я пробовал искать такой файл в ручную, но тщетно...
Или есть какие-то специальные приемы?
Я не очень понимаю, но наверное это и подразумевалось под "проинвестигейтить"?
Аааа, или ты имеешь ввиду, что нужно найти файл который он при запуске автоматически читает и туда написать мою команду. Потому, что в начале запуска он сразу пишет некоторый текст?!
Я пробовал искать такой файл в ручную, но тщетно...
Или есть какие-то специальные приемы?
Я не очень понимаю, но наверное это и подразумевалось под "проинвестигейтить"?
- Romeo
- Сообщения: 3126
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
Я правильно понимаю, когда ты запускаешь gnuplot, у тебя появляется некое подобие командной строки, где ты можешь писать команды gnuplot'а? Так вот, я тебе предлагал посмотреть позволяет ли запускной файл wgnuplot.exe передать в качестве параметра имя файла, содержащего команды gnuplot'а.
То есть, например в gnuplot тебе нужно выполнить следующие команды:
Вопрос был в следующем: смотрел ли ты документацию на gnuplot, можно ли эти команды поместить в отдельный файл commands.txt и затем передать его в качестве параметра запускному файлу wgnuplot.exe? Дело в том, что большая часть подобных утилит это позволяют. В подобном режиме они запускаются, читают команды из файла одна за одной и выполняют их, потом сами закрываются, даже не предлагая вводить команды с клавиатуры. Вполне возможно, что у тебя станет доступным такой или похожий вызов из С++:
То есть, например в gnuplot тебе нужно выполнить следующие команды:
Код: Выделить всё
load "my_file.dat"
draw_graphic
Код: Выделить всё
system("start C:\\Program\\Gnuplot\\bin\\wgnuplot @commands.txt");
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Урааа! Получилось!
Огромное спасибо! Там и в правду есть такой файл, ну то есть, его не было, но я создал и все заработало!
Теперь моя программка практически завершена!
Еще раз благодарю!
Огромное спасибо! Там и в правду есть такой файл, ну то есть, его не было, но я создал и все заработало!
Теперь моя программка практически завершена!
Еще раз благодарю!

- Romeo
- Сообщения: 3126
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
Да не за что. Обращайся 
Самому приятно, что получилось дать дельный совет по программе, которую никогда в жизни не видел

Самому приятно, что получилось дать дельный совет по программе, которую никогда в жизни не видел

Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Не уверен, что получится, но попробуй конкатенировать с параметром systemа всё, что хотел запизхать в командную строку глуплота.
Вопрос: "Почему вы все сионисты? Нельзя ли писать на чём то другом?".
Ответ: "Писать можно на чём угодно. Но зачем же так себя ограничивать? Пиши на С!".
Ответ: "Писать можно на чём угодно. Но зачем же так себя ограничивать? Пиши на С!".
- Romeo
- Сообщения: 3126
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
atavin-ta, ты прочитал только первый пост? Обсуждение не осилил, по всей видимости. Слушай, ты с Airhand не знаком, случаем? 

Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.