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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Процессы в Unix, execlp, Запуск на компиляцию двух файлов 
V
    Опции темы
ksu04061992
  Дата 30.11.2013, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Добрый день мне нужно написать программу, запускающую команду отдельной компиляции двух файлов
./prog f1.c f2.c
 Т.е. в результате работы должны быть  сформированные два исполняемых файла: f1.out и f2.out.
Заранее спасибо.
PM MAIL   Вверх
konshyn
Дата 30.11.2013, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(ksu04061992 @ 30.11.2013,  11:18)
Добрый день мне нужно написать программу, запускающую команду отдельной компиляции двух файлов
./prog f1.c f2.c
 Т.е. в результате работы должны быть  сформированные два исполняемых файла: f1.out и f2.out.
Заранее спасибо.

посмотри, что такое утилита make и make-файлы


--------------------
«Потому что ценность акта действия в этой стране возрастает в несколько раз».
PM MAIL Skype   Вверх
Фантом
Дата 30.11.2013, 12:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


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

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



Это принципиально необходимо сделать на C/C++? Иначе с предыдущим оратором можно только согласиться...
PM   Вверх
konshyn
Дата 30.11.2013, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Фантом @  30.11.2013,  12:16 Найти цитируемый пост)
сделать на C/C++?

тогда нужно просто в программе сделать два вызова system()
к примеру:

Код

system("gcc -o f1.out /home/user/.../f1.c");
system("gcc -o f2.out /home/user/.../f2.c");



--------------------
«Потому что ценность акта действия в этой стране возрастает в несколько раз».
PM MAIL Skype   Вверх
ChipNDale
Дата 30.11.2013, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Причем тут system?
В заголовке даже подсказка есть - execlp.
Код
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>

int compile(const char* infile, const char* outfile)
{
    int pid;
    pid = fork();

    if (pid < 0)
    {
        perror("fork");
        return -1;
    }
    else if (pid > 0)
    {
        printf("Started process %d\n", pid);
    }
    else if (pid == 0)
    {
        if (execlp("gcc", "gcc", "-o", outfile, infile, (char*)0) < 0)
        {
            perror("exec");
            return -1;
        }
    }

    return pid;
}

void waitchild(int pid)
{
    int status;

    waitpid(pid, &status, 1);
    printf("Process %d exit status %d\n", pid, status);
}

int main()
{
    int pid1;

    if ((pid1 = compile("hello1.c", "h1")) < 0)
    {
        return -1;
    }

    int pid2;

    if ((pid2 = compile("hello2.c", "h2")) < 0)
    {
        return -1;
    }

    waitchild(pid1);
    waitchild(pid2);

    return 0;
}


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

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

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


 




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


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

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