Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Параллельное программирование / С под Linux  (Прочитано 847 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Fatosha

  • Автор темы
  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
Код: (C) [Выделить]
pid_t hackers_generator, serfs_generator;       //Processes for generator

    hackers_generator = fork();

    if(hackers_generator == 0)
    {
        hackers_procces();
    }

    serfs_generator = fork();
    if(serfs_generator == 0)
    {
        serfs_process();
    }

Создаю процесс "hackers_generator", потом сразу создаю процесс " serfs_generator", но он создается дважды, как можно сделать так, что бы было созданно только 2 процесса, а не 3?

Старайтесь добавлять код в текст сообщения не прибегая к сторонним сервисам, за исключением очень большого кода.
« Последнее редактирование: 15 Апреля 2014, 12:26:07 от Чистый »

Оффлайн aSmile

  • Активист
  • *
  • Сообщений: 754
    • Просмотр профиля
Re: Параллельное программирование / С под Linux
« Ответ #1 : 15 Апреля 2014, 10:27:18 »
Попробовал твой код
Код: (C++) [Выделить]
#include <sys/types.h>
#include <unistd.h>

int main() {
  pid_t hackers_generator, serfs_generator;       //Processes for generator
   
  hackers_generator = fork();
   
  if(hackers_generator == 0)
  {
      execl("a", NULL);
  }
 
  serfs_generator = fork();
  if(serfs_generator == 0)
  {
      execl("b", NULL);
  }
};

После выполнения получил два процесса
u@s:~/C# ps
  PID TTY          TIME CMD
21602 pts/1    00:00:00 bash
22223 pts/1    00:00:00 a
22224 pts/1    00:00:00 b
22226 pts/1    00:00:00 ps

Оффлайн Чистый

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 3473
  • nix - вот оно счастье...
    • Просмотр профиля
Re: Параллельное программирование / С под Linux
« Ответ #2 : 15 Апреля 2014, 12:24:51 »
а как же процесс который форкается ? ты сделал два форка значит процесса всего три, первоначальный который ты запускаешь и те которые форкаются а и b
Тестовый репозиторий kdeNeur ppa:devcode/kdeneur
各々が死ぬことをどのように決定する

Оффлайн aSmile

  • Активист
  • *
  • Сообщений: 754
    • Просмотр профиля
Re: Параллельное программирование / С под Linux
« Ответ #3 : 15 Апреля 2014, 12:46:20 »
Как видно из кода, мой основной процесс завершается после форков.
Вопрос у ТС был
Цитировать
потом сразу создаю процесс "serfs_generator", но он создается дважды

Оффлайн Чистый

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 3473
  • nix - вот оно счастье...
    • Просмотр профиля
Re: Параллельное программирование / С под Linux
« Ответ #4 : 15 Апреля 2014, 13:21:50 »
aSmile,
Да согласен, но и ТС не показал как он проверял  наличие двух процессов, так же не понятно что творит в функциях которые вызываются в форках
Тестовый репозиторий kdeNeur ppa:devcode/kdeneur
各々が死ぬことをどのように決定する

 

Страница сгенерирована за 0.034 секунд. Запросов: 25.