The UNIX and Linux Forums  
Здравствуйте и добро от Соединенных Штатов UNIX и Linux Форумы! Благодарим Вас за посещение и вступления нашей мирового сообщества.

Go Back   В UNIX и Linux Форумы > Топ форумы > Программирования высокого уровня
.
Google unix.com



Программирования высокого уровня Почтовые вопросы о C, C + +, Java, SQL и других языках программирования здесь.

Подробнее UNIX и Linux Темы форума можно найти полезные
Нить Резьба для начинающих Форум Ответы Последнее сообщение
И ад математике ogoy Shell программирование и сценарии 5 05-26-2008 11:58 PM
ада и SQLite ogoy Shell программирование и сценарии 2 05-21-2008 01:07 AM
об. / мин аду! knmwt15000 UNIX для чайников Вопросы И Ответы 7 03-27-2002 06:06 AM
негативные UID / GID?!! Я могу видеть 'Em, но какого черта они означают?! hellz UNIX для чайников Вопросы И Ответы 2 09-07-2001 04:18 PM

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered By Powered by Google
 
LinkBack Резьба Инструменты Искать в этом Thread Оценить Thread Режимы дисплея
Old 01-22-2002
theultimatechuf theultimatechuf is offline
Зарегистрированный пользователь
  
 

Регистрация: Январь 2002
Место проведения: Великобритания
Сообщений: 6
Angry вилка () ING аду!!

Здравствуйте У меня серьезные проблемы с вилкой команду, я в основном хотят создать 9 или 10 дочерних процессов, и сохранять их PID номеров в массив, а дети остаются резидентами, пока я не убивают () их позже, я вроде как не могу контролировать то, как многие из них сделали как все они, как представляется, создать их собственные дети.

Мне удалось остановить разрушение моей системы, может кто-нибудь помочь, пожалуйста, ни одна из моих книг, какие-либо использования.
Old 01-22-2002
aniruddha aniruddha is offline
Зарегистрированный пользователь
  
 

Регистрация: Январь 2002
Расположение: в Пуне, Индия
Сообщений: 3
Это очень распространенная проблема наблюдается с вилкой.
Вы можете иметь некоторые флаг переменная, которая не позволит ребенку процесс вилка, когда родитель вилки.

Очень примитивный код может быть somthing так: --

# включить <stdio.h>
# включить <unistd.h>
# включить <errno. H>

недействительным Main ()
(
INT child1, child2, вальс, if_child;
символ ERR [1000];

if_child \u003d 1;

memset (ERR, '\ 0', strlen (ERR));

printf ( "\ nParent процесса идентификатор% D \ N", getpid ());

child1 \u003d вилка ();
если (child1 \u003d\u003d -1)
(
вызов (ERR, strerror (errno));
)
еще
(
если (child1> 0) / * Если вилка команда успешно ребенок PID будет больше нуля. * /
(
printf ( "\ nThe child1 процесса идентификатор% D \ N", child1);
if_child \u003d 0;
/ * Установить флаг здесь, чтобы предотвратить процесс детей с forking * /
)
)

memset (ERR, '\ 0', strlen (ERR));

если (if_child \u003d\u003d 0)
(
child2 \u003d вилка ();
если (child2 \u003d\u003d -1)
(
вызов (ERR, strerror (errno));
)

printf ( "\ nThe child2 процесса идентификатор% D \ N", child2);

убить (child2);
)


убить (child1);

выход (0);
)
Old 01-22-2002
theultimatechuf theultimatechuf is offline
Зарегистрированный пользователь
  
 

Регистрация: Январь 2002
Место проведения: Великобритания
Сообщений: 6
Большое спасибо, выглядит многообещающим, я с нетерпением ожидаю дня, когда я могу ответить на чужой * NIX programmig вопрос. Похоже, что собираешься занять больше времени, чем с Vb.
Old 01-23-2002
bb666 bb666 is offline
Зарегистрированный пользователь
  
 

Регистрация: Январь 2002
Место проведения: Румыния
Сообщений: 10
Я была такая же проблема с одним из моих проектов (вы можете увидеть, если резьба называется "сделать процесс дерево") и получать больше детей, чем процессы я ожидал очень неприятную проблему.
До сих пор не понял, как это работает точно, но я надеюсь, aniruddha советами поможет мне тоже.
Old 01-24-2002
theultimatechuf theultimatechuf is offline
Зарегистрированный пользователь
  
 

Регистрация: Январь 2002
Место проведения: Великобритания
Сообщений: 6
Благодаря annibuddha (заключается в том, что, как это пишется?) Видим bb666 должность я думал, я бы эту должность ...

Я был немного неприятностей, как я добавил больше детей, но решила сохранить ID родителей в самом начале:

PID \u003d getpid ()

позже, чем я только что проверил переменную, которую я понимаю, будут на всех детей, в отношении в отношении getpid ()

т.е. чтобы ребенок остановить процесс и ждать навсегда после того, как она была создана:

если (PID! \u003d getpid ()) // это не родитель
для (;;)

Затем процессы просто сидеть там, пока они не убили (надеюсь)

Последний раз редактировалось theultimatechuf; на 01-24-2002 06:13 PM..
Old 01-25-2002
bb666 bb666 is offline
Зарегистрированный пользователь
  
 

Регистрация: Январь 2002
Место проведения: Румыния
Сообщений: 10
Да. Вот один из способов сделать это или вы могли бы просто послать сигнал остановки, чтобы ребенок процессы не будут тратить в памяти ничего. Просто замените на (;;)
с убить (getpid (), SIGSTOP).
Вот и все штрафы и денди, но что, если вы хотите, чтобы ребенок процесс фактически сделать что-нибудь? Причина, если остановить его или направить его в бесконечный цикл, то вы можете не вполне работают в ребенка можно?
Это фактически является частью Меня интересует: работа в детской, но предотвратить его forking после того, как родитель вилки снова.
Old 01-26-2002
Perderabo's Avatar
Perderabo Perderabo is offline Forum Staff  
Unix Daemon
  
 

Регистрация: август 2001
Место проведения: Ashburn, Вирджиния
Сообщения: 9123
Вы, ребята делают этот гораздо сложнее, чем это необходимо. Давайте сначала forking один Процесс и хранение его PID:
Код:
#include &lt;stdio.h>
#include &lt;unistd.h>

void main()
{
        int pid, parentpid, childpid;

        parentpid=getpid();
        printf("I am the parent process and my pid is %d\n", getpid());

        if (pid=fork()) {
                childpid=pid;
        } else {
                printf("I am a child process and my pid is %d\n", getpid());
                exit(0);
        }

        printf("I am still the parent process and my pid is %d\n", getpid());
        exit(0);
}
Здесь ребенок просто отображает процесс ее PID затем выходов. Вы, вероятно, хотел бы сделать больше с вашим ребенком процессы, но после ваших детей, заботиться о бизнесе они должны выйти, чтобы они участвуют в каких-либо дальнейших forking. Кроме того, в моем примере родителей процесс выхода довольно быстро. Это означает, что будут наследовать инициализации ребенка и будут получать ее, когда она умирает. Если я хотел бы держать родителей вокруг, я должен гарантировать, что она выдает подождать () требует для каждого ребенка, который умирает. Если бы я не делал этого, то дети становятся зомби. Я, как правило, только позвольте родителя умирают.

После того, как мы есть код, который делает то, что мы хотим, если мы хотим сделать это N раз, мы используем петля:
Код:
#include &lt;stdio.h>
#include &lt;unistd.h>

void main()
{
        int n, pid, parentpid, childpids[10];

        parentpid=getpid();
        printf("I am the parent process and my pid is %d\n", getpid());

        for(n=0; n<5; n++) {
                if (pid=fork()) {
                        childpids[n]=pid;
                } else {
                        printf("I am a child process and my pid is %d\n", 
                                        getpid());
                        exit(0);
                }
        }

        printf("I am still the parent process and my pid is %d\n", getpid());
        exit(0);
}
В соответствии с ФП, детский pids записаны в один массив. Но я до сих пор просто не говоря родителя умирают.
Closed Thread

Закладки

Резьба Инструменты Искать в этом Thread
Искать в этом Thread:

Расширенный поиск
Режимы дисплея Оценить эту ветку
Оценить эту ветку:

Отправка Правила
Вы не может Начать новую нитей
Вы не может Почтовые ответы
Вы не может Почтовые вложения
Вы не может Редактировать Ваши сообщения

BB код быть На
Смайлики являемся На
[IMG] код На
HTML-код Вне
Trackbacks являемся На
Pingbacks являемся На
Refbacks являемся На




Часовой пояс GMT -4. Текущее время 03:13 AM.


Powered By: Справка, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Язык Переводы на питание от .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
В UNIX и Linux форумы Содержание Copyright © 1993-2009. Все права Reserved.Ad управления по RedTyger

Содержание соответствующие URL-адреса в vBSEO 3.2.0