Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.05.2013, 23:47   #1
AFA
Пользователь
 
Регистрация: 19.04.2009
Сообщений: 69
По умолчанию реализация fork();

Здравствуйте!
Сильно не пинайте, я только начинаю разбираться в Си и очень запутался. Задача такова: программа которая запускает пару тестов(позитивные, негативные). Необходимо реализовать возможность запускать эти тесты как в отдельном процессе, так и нет (устанавливается флагом).
Возник вопрос:
Например, если я делаю fork() в "void test_p1(void)" или в "int menuPositive(void)", то чтобы вернутся к тесту\меню надо завершить выполнение процесса. Может можно как-то хитро вернуться не завершая потомка, или как-нибудь обыграть этот момент.
Написал я как-то сумбурно и возможно жудко запутанно.. но не знаю как объяснить по другому.

PHP код:
static int _fstat FORK;        //flag for fork

int main(int argcchar **argv)
{
    
menuMain();
    return 
0;
}

void menuMain()
{
    
int caseSwitch 1;
    switch (
caseSwitch)
    {
    case 
1:
                  
printf("Positive");
            (
void*)menuPositive();
                break;
    case 
2:
            
printf("Negative");
            (
void*)menuNegative();
            break;
    default:
            
printf("Default case");
            break;
    }
}

int menuPositive(void)
{
    
//перечень позитивных тестов + их проверяющие функции

    
add_positive_tests_into_suite();     //add test into suite
}

int menuNegative(void)
{
    
//перечень негативных тестов + их проверяющие функции

    
add_negativ_tests_into_suite();        //add test into suite
}

void test_p1(void)
{
    
//positive test1
}
    ..... 
p.s. Спасибо всем кто дочитал!
AFA вне форума Ответить с цитированием
Старый 01.06.2013, 05:11   #2
kventin_zhuk
БНТУ ФИТР
Форумчанин
 
Аватар для kventin_zhuk
 
Регистрация: 20.05.2012
Сообщений: 315
По умолчанию

Немного вас не понял, вы хотите из основной программы запускать свои процессы? Вызов fork запускает дочерний процесс, являющийся копией родительского.Чтобы изменить его - нужно использовать одну из функций семейства exec. Чтобы родительский процесс дождался завершения дочернего используется вызов wait. Написано с колокольни сп под линукс Но оно вам надо?) или вы хотите чтобы родительский процесс завершился раньше дочернего?но смысл...
С++(console/builder/WinAPI/Linux), C#, Pascal, Delphi, Asm, Prolog.
< ----- Контакты
kventin_zhuk@live.com

Последний раз редактировалось kventin_zhuk; 01.06.2013 в 05:15.
kventin_zhuk вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Реализация БД chocolat БД в Delphi 2 24.11.2012 12:15
Linux, создание дочернего процесса, fork() и execl() Demqieff Общие вопросы C/C++ 8 20.11.2012 18:27
реализация в QT navolo4ka Qt и кроссплатформенное программирование С/С++ 0 10.02.2012 15:39
вызов fork Sna1L Общие вопросы C/C++ 0 20.12.2011 16:33
Реализация stopvirus Общие вопросы Delphi 12 24.12.2010 19:44