36 lines
1.2 KiB
Plaintext
Executable File
36 lines
1.2 KiB
Plaintext
Executable File
Что будет выведено на экран? Прокомментировать, почему? Если возможны несколько вариантов – привести все. Предполагается, что
|
||
обращение к функции вывода на экран прорабатывает атомарно и без буферизации. Все системные вызовы прорабатывают успешно.
|
||
Подключение заголовочных файлов опущено.
|
||
|
||
int main() {
|
||
int pid;
|
||
int fd[2];
|
||
char c = 'a';
|
||
pipe(fd);
|
||
|
||
if( (pid = fork()) > 0 ) {
|
||
read(fd[0], &c, 1);
|
||
kill(pid, SIGKILL);
|
||
wait(NULL);
|
||
} else {
|
||
putchar(c);
|
||
c = 'b';
|
||
write(fd[1], &c, 1);
|
||
c = 'c';
|
||
}
|
||
|
||
putchar(c);
|
||
return 0;
|
||
}
|
||
|
||
(Вес задачи: 2 балла)
|
||
|
||
Answer:
|
||
1) начнётся с a т.к. отец заблокируется на считывании
|
||
2) сын записал б в канал, дальше либо отец может отправить его "на убийство", либо сын проработает быстрее. У сына с
|
||
3) только после смерти сына отец выведет б
|
||
|
||
aсб
|
||
aб
|
||
|