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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запуск system("cmd.exe") и передача дополнительных, Работа с pipe 
:(
    Опции темы
neosapient
Дата 17.8.2016, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Здравствуйте.

Хочу автоматизировать отправку команд для компиляции программ из консоли.

Мне надо запустить дочерний процесс, который будет эквивалентен запуску bat-файла с содержимым
Код

%comspec% /k ""C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\vcvarsall.bat"" x86

и в открывшемся окне выполнить какие-нибудь команды, например
Код

cd c:
nmake 
nmake install


В общем, пробую писать данные через пайпы, но мой команды не слышат
Код

#include <stdio.h>
#include <stdlib.h>

void foo(char *path)
{
    std::string cmd_exe = "%comspec% /k \"\"C:\\Program Files (x86)\\Microsoft Visual Studio 11.0\\VC\\vcvarsall.bat\"\" x86";
    FILE *file = _popen(cmd_exe.data(), "wt");
    if(!file)
        return;
    //
    std::stringstream cd;
    //
    std::string folder = path;
    std::replace(folder.begin(), folder.end(), '\\', '/');
    cd << "cd \"" << folder << "\"";
    fputs(cd.str().data(), file);
    //
    std::stringstream nmake;
    nmake<< "nmake";
    fputs(nmake.str().data(), file);
    _pclose(file);
}


То есть, когда я вызываю _popen(), то в консоли вижу стандартное приглашение к работе "D:\something>".
Но дальше мои команты "cd c:" и "nmake" игнорируются.
Указатель file не нулевой, но pipe не реагирует на мои команды. Возможно я как то не правильно открываю pipe.
PM MAIL   Вверх
feodorv
Дата 20.8.2016, 20:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

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



Перевод строки к командам добавлять пробовали?


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


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

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


 




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


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

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