Перейти к содержанию

mp3moto

Members
  • Постов

    10
  • Зарегистрирован

  • Посещение

    Никогда

Contact Methods

  • ICQ
    283227723

Достижения mp3moto

  1. Привожу кусок кода: int i, shmId1, semId1; unsigned short int ray[2] = {0,0}; union semun { int val; struct semid_ds*buf; unsigned short int *array; struct seminfo*_buf; }ar; shmId1 = shmget(11,200,IPC_CREAT|0666); if(shmId1 == -1) printf("Creator: Shared memory 1 not created\n"); else printf("Creator: Shared memory 1 created\n"); semId1 = semget(98,1,IPC_CREAT|0666); if(semId1 == -1) printf("Creator: Semafors not created\n"); else printf("Creator: Semafors created\n"); ar.array = ray; i = semctl(semId1,1,SETALL,ar.array); if(i == -1) { printf("Creator: Semafors not installed!\n"); exit(-1); } else printf("Creator: Semafors installed in BLOCK option\n"); printf("%d \n",semctl(semId1,0,GETVAL,0)); printf("%d \n",semctl(semId1,1,GETVAL,0)); } //------------------------------------------------------- В конце программы я запрашиваю значения каждого семафора в наборе и программа выводит 0 и -1. Почему так? Ведь должно быть 0 и 0.
  2. Привожу код программы: int main(){ int fifo1[2], fifo2[2], fdr, st, i; FILE *f; char buff[1024]; if((mknod("fifo1",S_IFIFO|0666,0)<0) && (errno != EEXIST)) printf("FIFO ERROR"); f = fopen("msg.txt","r"); if ((fdr = open("fifo1",O_WRONLY))<0)// <======= printf("\nERROR"); else printf("0"); write(fdr,"message",1024); printf("\nexecuting client"); if (fork == 0) execvp("./client",NULL); while(i=wait(&st)>0); unlink("fifo1"); /*fgets(buff,1024,f); printf(buff);*/ exit(0); } Вопрос: почему процесс "засыпает" на месте отмеченном <======= ??? Файл fifo1 функцией mknod вроде как создается (в текущей папке появляется значок "кран"), а открыть его не может... Или может от того, что fifo1 пустой и процесс ждет пока туда кто-нибудь что-нибудь запишет??? Тогда как это сделать? Заранее благодарю!
  3. Возникает проблема при попытке открыть FIFO-файл. Создается он нормально: mknod("fifo1",S_IFIFO|0666,0) а при попытке открыть int f; f=open("fifo1",1) Компилятор говорит: 'open' was not declared in this scope Я не знаю почему f целочисленная (так написано в методичке), может какой-нибудь другой тип ей присвоить надо? Или заголовочный файл подключить? файлы sys/types.h и sys/stat.h и unistd.h подключены. Заранее благодарю!
  4. Эээээ... ну спасибо за помощь! А то я думал, что "дедушка" должен умирать последним! А еще вопрос, может ли время выполнения процесса быть равным нулю??? У меня в программе все "родители" выводят нули, а последнее поколение процессов выводит время своей работы. Реализовано при помощи стандартной структуры tms... Если надо код напишу.
  5. Кусок программы: for (i=0;i<3;i++) if (fork() == 0) execvp("./son",NULL); else wait(st); Родительская программа запускает 3 процесса Son и вроде как должна дождаться пока они все не закончат свою работу. Почему родительская программа не ждет окончания выполнения дочерних?
  6. Спасибо ОГРОМНОЕ! Теперь все работает! Запускаетс! А посоветуйте, что лучше прочитать про линукс?
  7. Есть такой вопрос, пишу программы на С++, а компилирую утилитой g++. Прогу отладил, ошибок нет, объектный и исполняемый файл создаются. Но почему-то когда я пытаюсь запустить приложение двойным щелчком ничего не происходит. Сначала я подумал, что программа слишком быстро выполняется и я ничего не успеваю заметить. Но потом поставил в самом начале scanf("%d",i); Т.е. в этом месте она должна ждать пока я чего-нибудь введу. Но повторяется та же картина. А если запускать через терминал: комманда dir выводит, что в текущем каталоге есть исполняемый файл proga, когда я ввожу exec proga мне выдает bash: exec: proga: not found. Что не так, подскажите пожалуйста! Прилагаю скриншот.
  8. Да вроде ничего и не мудрил такого... рекоммендованные параметры везде выбирал... Поиск в гугле тоже особых результатов не дал. Блин, что еще можно попробовать???
  9. Подскажите please, как сделать реализовать выбор между windows и linux перед загрузкой ОС? Раньше я ставил ASP Linux, так он мне сам красивый такой загрузчик сделал, где выбирать можно было. А сейчас Mandriva 2007 установил, а грузится все равно windows.
×
×
  • Создать...