Форум программистов, компьютерный форум CyberForum.ru

C для начинающих

Войти
Регистрация
Восстановить пароль
 
uralic
0 / 0 / 0
Регистрация: 25.02.2016
Сообщений: 15
#1

Запуск процессов в соответствии с условием: найти и исправить ошибки в коде - C (СИ)

15.07.2017, 21:05. Просмотров 130. Ответов 0
Метки нет (Все метки)

Процесс-отец открывает существующий текстовый файл, а затем порождает два дочерних процесса, которые по очереди выводят содержимое этого файла фиксированными порциями по 22 символа, предваряя каждый вывод номером своего процесса. Вывод на экран заканчивается или при достижении конца файла, или по истечении интервала времени в 12 секунд.


помогите исправить код


C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#include <signal.h>
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
 
void p_action(int sig)
{
    FILE* fd;
    char line[11];
    if ((fd = fopen("1.txt", "r")) == NULL)
    {
        printf("error\n");
        exit(1);
    }
    while (!feof(fd))
    {
        printf("%d\n", getpid());
        if (fgets(line, 11, fd))
            printf("%s\n", line);
    }
    fclose(fd);
}
void c_action(int sig)
{
    FILE* fd;
    char line[11];
    if ((fd = fopen("1.txt", "r")) == NULL)
    {
        printf("error\n");
        exit(1);
    }
    while (!feof(fd))
    {
        printf("%d\n", getpid());
        if (fgets(line, 11, fd))
            printf("%s\n", line);
    }
    fclose(fd);
}
 
void handler(int s)
{
    alarm(12);
    signal(SIGALRM, handler);
    printf("12 seconds\n");
}
 
int main(int argc, char** argv)
{
    static struct sigaction pact, cact;
    pid_t pid, pid1, pid2;
    FILE* fd;
    int c;
    char line[11];
 
    pid1 = fork();
    pid2 = fork();
 
    for (;;)
    {
        signal(SIGALRM, handler);
        alarm(12);
        pause();
    }
 
    if (pid1 == 0)
    {
        cact.sa_handler = c_action;
        sigfillset(&(cact.sa_mask));
        sigaction(SIGUSR1, &cact, NULL);
        pid2 = getpid();
 
        for (;;)
        {
            sleep(1);
            kill(pid2, SIGUSR1);
            pause();
        }
    }
    else if (pis2 == 0)
    {
        pid1 = getpid();
 
        pact.sa_handler = p_action;
        sigfillset(&(pact.sa_mask));
        sigaction(SIGUSR2, &pact, NULL);
 
        for (;;)
        {
            sleep(1);
            kill(pid1, SIGUSR1);
            pause();
        }
    }
    else
        waitpid((int*)0);
    waitpid((int*)0);
    exit(0);
    alarm(0);
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.07.2017, 21:05
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Запуск процессов в соответствии с условием: найти и исправить ошибки в коде (C (СИ)):

Найти и исправить ошибки в коде - C (СИ)
{ссылка на сторонний ресурс удалена модератором} Кто нибудь знает где ошибка в заданиях и кодах? Кто разбирается,отпишитесь...

Найти и исправить ошибки в коде - C (СИ)
#include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;string.h&gt; #include &lt;time.h&gt; struct stadiums{ char Name ; short int D_cr; int...

Найти и исправить ошибки в приведенном коде - C (СИ)
# include&lt;conio.h&gt; # include&lt;stdio.h&gt; # include&lt;string.h&gt; # include&lt;stdlib.h&gt; #define abonent typedef...

Найти факториал: исправить ошибки в коде - C (СИ)
#include &lt;stdio.h&gt; int main() { int n; int m; n=0; m=0; scanf(&quot;%d&quot;,n); m=2; int i;

Найти причины возникновения ошибок в коде и исправить эти ошибки - C (СИ)
я чайник(9((((9( #include &lt;stdio.h&gt; #include &lt;math.h&gt; void main() { float x, y, z, a, b, c, d, s; printf(&quot;\n...

Чтение, обработка и запись в бинарный файл. Найти и исправить ошибки в коде - C (СИ)
Есть строка, ее надо разбить на слова с буквой d. Строку ввести с экрана, потом записать в бинарный файл, потом с него считать, потом...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.07.2017, 21:05
Привет! Вот еще темы с ответами:

Ошибки при компиляции - исправить ошибки в коде - C (СИ)
Помогите исправить ошибки , не понимаю в чем может быть причина ... #include &lt;conio.h&gt; #include &lt;stdio.h&gt; #include &lt;math.h&gt; ...

Игра "жизнь" - найти и исправить ошибки в коде - C (СИ)
#include &quot;stdafx.h&quot; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;windows.h&gt; #include &lt;WinCon.h&gt; #include &lt;conio.h&gt; #include...

Найти и исправить ошибки в коде: игра "Крепс" (программа из учебника Харви и Пола Дейтелов) - C (СИ)
Решил проверить работу программы из учебника Харви Дейтела и Пола Дейтеле. Получается, что при ее выполнении игрок всегда выигрывает, хотя...

Исправить ошибки в коде - C (СИ)
#include &lt;stdio.h&gt; int N,M; int a; int KP,KV; int o,oN,t; int i,j; void next(int x){ if (x==1){


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru