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

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

Вернуться   Форум программистов > C/C++ программирование > Qt и кроссплатформенное программирование С/С++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.03.2014, 12:46   #1
Nickolay0512
Пользователь
 
Регистрация: 26.10.2013
Сообщений: 54
По умолчанию Подскажите как сделать так, чтобы после порождения двух дочерних процессов, процесс-отец завершался / С под Linux

Есть программа в которой процесс-отец, порождает два дочерних процесса. Подскажите как сделать так, чтобы после порождения двух дочерних процессов, процесс-отец сразу завершался. Заранее спасибо.

#include <unistd.h>
#include <sys/types.h>
#include <stdio.h>

extern char **environ;
int main() {
// 1
FILE *f;
if ((f = fopen("file", "w")) == NULL) {
perror("Error");
return 1;
}

fprintf(f, "Some small text\n");
fclose(f);
// 2
pid_t pid1, pid2;
int status1, status2, i;
switch (pid1 = fork()) {
case -1:
perror("Error");
return 1;
case 0:
// 3
environ[0] = "SHELL=/bin/sh";
f = fopen("file", "a");
for (i = 0; i < 40; i++) {
if (environ[i] == NULL) break;
fprintf(f, "%s\n", environ[i]);
}
fclose(f);
break;
default:
switch (pid2 = fork()) {
case -1:
perror("Error");
return 1;
case 0:
// 3
environ[0] = "SHELL=/bin/zsh";
f = fopen("file", "a");
for (i = 0; i < 40; i++) {
if (environ[i] == NULL) break;
fprintf(f, "%s\n", environ[i]);
}
fclose(f);
break;
default:
// 4
waitpid(pid1, &status1, 0);
waitpid(pid2, &status2, 0);
if ((f = fopen("file", "r")) == NULL) {
perror("Error");
return 1;
}
char str[128];
while (!feof(f)) {
if (fgets(str, 126, f)) {
printf("%s", str);
}
}
execl("/bin/sh", "sh", "-c", "wc -w < file", NULL);
perror("Error");
}
}
return 0;
}
Nickolay0512 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как сделать так чтобы входить в оперу или хром только после введения пароля? [блондинка в шоке] sephia Помощь студентам 1 10.03.2012 21:22
Как можно сделать так, чтобы дочерняя форма была поверх всех окон после наступления определённого события? Вадим Мошев Общие вопросы Delphi 4 10.06.2011 13:01
Как сделать так чтобы после изменения настроек стала активирована кнопка "Применить" ?? KWN, lnc Общие вопросы Delphi 7 04.12.2010 02:14
Подскажите, как сделать так, чтобы тест можно было повторно пройти не перезагружая пр Kamikadze_666 Помощь студентам 2 23.05.2007 02:48