1 / 1 / 0
Регистрация: 20.04.2013
Сообщений: 283
1

Процесс не дожидается выполнения дочернего

23.11.2015, 11:06. Показов 1163. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# include <stdio.h>
# include <unistd.h>
int main ()
{
char s [15]; 
int fd [2];
if (pipe (fd) <0) 
{fprintf (stdout, "\n eror"); return 0;}
if (fork () == 0)
{
 
int r = sprintf (s, "MyPid =% d", getpid ());
write (fd [1], & s, r);
return 1;
}
 
wait(NULL);
read (fd [0], & s, 15); 
 
fprintf (stdout, "\ nParent read - '% s'", s); 
close (fd [0]); close (fd [1]); 
return 1;
}
в результате вывода "Parent read -". Полученное значение не выводит. В чем беда?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.11.2015, 11:06
Ответы с готовыми решениями:

Boost.asio io_service.run не дожидается выполнения асинхронного чтения
Добрый день! Имеется такая задача: - нужно отправялться HTTP запрос и получать ответ. все...

Результат выполнения дочернего процесса
Есть родительский процесс.Внутри создаю дочерний,который выполняет небольшую программу.Допустим...

Приостановить выполнения дочернего потока
В классе ChildrenThread нужно реализовать методы для приостановки и продолжения выполнения потока....

Родительский и дочерний процесс: почему запуск начинается сразу с дочернего процесса?
Родительский процесс должен считать содержимое текстового файла и передать его дочернему процессу....

1
528 / 431 / 159
Регистрация: 25.11.2014
Сообщений: 1,662
23.11.2015, 11:44 2
Лучший ответ Сообщение было отмечено Dimitrii как решение

Решение

Форматирование кода - полный пц. Тем не менее, работает.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# include <stdio.h>
# include <unistd.h>
int main ()
{
char s[15]; 
int fd[2];
if (pipe (fd) <0) 
{fprintf (stdout, "\n eror"); return 0;}
 
if (fork () == 0)
{ 
    int r = sprintf (s, "MyPid = %d", getpid ());
    write (fd[1], s, r);
    return 1;
}
 
wait(NULL);
read (fd[0], s, 15); 
 
fprintf (stdout, "\nParent read - '%s'\n", s); 
close (fd[0]); close (fd[1]); 
return 1;
}
Код
$ ./a.out 

Parent read - 'MyPid = 15776'
$ ./a.out 

Parent read - 'MyPid = 15778'
$ ./a.out 

Parent read - 'MyPid = 15780'
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.11.2015, 11:44
Помогаю со студенческими работами здесь

Приостановка выполнения главного приложения в момент вызова дочернего
Здравствуйте. В консольном приложении есть строка: ...

Остановка выполнения процедуры, занимающей много ресурсов системы, из дочернего окна.
Итак... В процессе выполнения программы у меня организован поиск по рестру. В начале выполнения...

показываем процесс выполнения
Processing (ну, или как-то так). Что умеет: 1. Пишет в RTF (по идее без ограничения размера...

Процесс выполнения Button
Доброе утро.Не подскажите как сделать процесс выполнения нажатия Button? Что то вроде этого....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru