Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C Linux EINVAL в lseek(SEEK_END) https://www.cyberforum.ru/ c-linux/ thread33093.html
есть задача, прочитать раздел жесткого диска. Даю пользователю права на этот раздел chown User /dev/sda1. Затем пишу код: // открываю раздел для чтения int fd = open("/dev/sda1", O_RDONLY);...
C Linux Путаница в работе socket
клиент и сервер. по отдельности c netcat'ом работают, a между собой вылезает ошибка в функции accept: accept: Bad file descriptor. подскажите где ошибка?? Server: #include <stdlib.h> 2...
C Linux Работа с сигналами Необходимо создав дерево процессов : проц1 проц2 проц3 проц4 проц5 проц6 проц7... https://www.cyberforum.ru/ c-linux/ thread31928.html C Linux Не получается создать более 382 потоков нужно создать много нитей. Не хочет создавать более 382 потоков. на 383ем возвращает 12 = ENOMEM = out of memory Проблемма: нужно создать значительно большее кол-во потоков. Вопрос: out of какой... https://www.cyberforum.ru/ c-linux/ thread30642.html
Имя машины, на которой запущено приложение C Linux
Как узнать имя машины , на которой запущенно приложение???
C Linux Вычисление CRC https://www.cyberforum.ru/ c-linux/ thread25435.html
void f1(){} void f2(){} int main(){ int CRC,i; for(p=f1;p!=f2;++p) CRC+=*p; return 0; } вычислил для f1,а как для функции main?
C Linux Аналог VirtualProtect https://www.cyberforum.ru/ c-linux/ thread25353.html
есть ли в Линукс аналог VirtualProtect Добавлено через 6 минут 55 секунд функцию нашел токо вот чето не получается void sm(){printf("privet ot mecida");} void sme(){}; void handler(int...
C Linux Элементарная программа
Элементарная программа но не пашет #include <unistd.h> int main(){ execl("/bin/ls","ls",0); return 0; } qwerty.c: In function ‘main’: qwerty.c:3: warning: missing sentinel in function call
C Linux Модули ядра https://www.cyberforum.ru/ c-linux/ thread24591.html
пытаюсь написать простейший модуль ядра не находит файл linux/module.h linux/init.h Стоит убунту 8.10
C Linux PF_RING https://www.cyberforum.ru/ c-linux/ thread20529.html
Здравствуйте, Кто нибудь использует PF_RING? Хотелось бы обсудить пару проблем с этим модулем.
C Linux програмируем сеть :D
значит так вот простенькие исходники клиента и сервера которые работают на локальной машыне через возвратный адрес но можно и через сеть пример взят с книги Йон Снейдер - Эффективное...
 
0 / 0 / 0
Регистрация: 25.03.2009
Сообщений: 5
0

работа с семафорами - C++ Linux - Ответ 158244

10.05.2009, 20:31. Показов 3816. Ответов 2
Метки (Все метки)

Родительский процесс создаёт семафор (сем1) и общий файл. Дочерний процесс записывает в файл по одной строке всего 3 строки вида pid_процесса ppid текущее_время (мсек). Родительский процесс читает из файла строки и выводит их по одной ,Семафор использую для разрешения, кому из процессов получить доступ к файлу,но что-то получается какая-то ерунда
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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
#include <stdio.h>
# include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <linux/ipc.h>
#include <linux/sem.h>
 
#define size 256
 
//char *file="semaf";
 
 
int main (int argc, char *argv [])
{
    FILE *f;    
    int i,j;
    pid_t pid;
    char buf1[size],buf2[size],str1[256],str2[256],str3[256],str[2]=" ";  
    struct timeval lt;
    size_t kol,s;
    int semid;
    char pathname[] = "sem1.txt";
    key_t key;
    struct sembuf mybuf1,mybuf2;
    union semun arg;
 
 
     key = ftok(pathname,0);
     semid = semget(key, 1, 0666 | IPC_CREAT); 
 
       
     arg.val=1;
     semctl (semid,0,SETVAL,arg);
 
    mybuf1.sem_op =-1;
    mybuf1.sem_flg = 0;
    mybuf1.sem_num = 0;
     
    mybuf2.sem_op = 1;
    mybuf2.sem_flg = 0;
    mybuf2.sem_num = 0;
 
 
    
      
    pid=fork ();
    if (pid==0)
    {
         if ((f = fopen (argv[1], "w" )) == NULL)
      {
    printf ("File open error.\n");
    exit (1);
      } 
     
     
        for (i=1;i<=3;i++)
        {
 
 
       
          if (semop(semid, &mybuf1, 1)==-1)
           {perror ("semop");}
  
 
 
 
 
 
  
 
          gettimeofday(&lt,NULL);
          gcvt(lt.tv_usec/1000,10,str3);
          gcvt(getpid (),10,str1);
          gcvt(getppid (),10,str2);
          strcat (str1,str);
          strcat (str1,str2);
          strcat (str1,str);  
          strcat (str1,str3);
             
          strcpy (buf2,str1);
         
          printf ("%s \n",buf2);
          fprintf(f, "%s\n", buf2);
          //fclose (f);
 
 
 
         
          semop(semid, &mybuf2, 1);
  
 
 
 
 
 
 
 
 
 
 
        }  
         fclose (f);
        exit (0); 
        
 
   }
  
       if ((f = fopen (argv[1], "r" )) == NULL)
      {
    printf ("File open error.\n");
    exit (1);
      } 
       
        for (j=1;j<=3;j++)
       
         { 
         
           
          if (semop(semid, &mybuf1, 1)==-1)
           {perror ("semop");}
  
 
  
 
           fscanf(f, "%s", buf1);
           printf("----%s %d\n", buf1);
 
 
 
 
 
 
 
          semop(semid, &mybuf2, 1);
  
 
 
         }
   semctl (semid,0,IPC_RMID);       
     //wait (NULL);
   fclose (f);
 wait (NULL);  
    return 0;
}


Вернуться к обсуждению:
работа с семафорами C++ Linux
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.05.2009, 20:31
Готовые ответы и решения:

Работа с семафорами.
помгите написать код:wall:...пож Cоздать два дочерних процесса. Родительский процесс создаёт...

Работа с семафорами
Здравствуйте, я написал код: #include &lt;sys/sem.h&gt; #include &lt;unistd.h&gt; #include &lt;sys/types.h&gt;...

Задача с семафорами
Дана такая задача: Железная дорога, соединяющая города A и B, имеет участок с одним путем. Пусть...

Пул потоков с семафорами
Задача:написать свой пуль потоков Написал вот такой код #include &lt;windows.h&gt; #include...

2
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.05.2009, 20:31
Помогаю со студенческими работами здесь

Пример программы с семафорами
Всем привет. Нужен пример программы с симафорами. Поможете? Или обьясните чо ето такое)

Написать программу с семафорами которая входит в критическую секцию
На дом задали такую домашку &quot;написать программу с семафорами которая входит в критическую секцию&quot;....

Нужна летиратура, в которой бы описывались работа с событиями, работа с элементами управления
Помогите пожалуйста найти летиратуру, в которой бы описывались работа с событиями,работа со всеми...

Работа - проведение обучающих семинаров по C#. Работа по выходным дням ( сб-вс - 32 часа). От 30 000р.
Обязанности - проведение обучающих семинаров по C# Базовый (начальный уровень). Опыт...

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