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

mp3moto

Members
  • Постов

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

  • Посещение

    Никогда

Сообщения, опубликованные 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 и вроде как должна дождаться пока они все не закончат свою работу.

    Почему родительская программа не ждет окончания выполнения дочерних? Confused

  6. Есть такой вопрос, пишу программы на С++, а компилирую утилитой g++. Прогу отладил, ошибок нет, объектный и исполняемый файл создаются. Но почему-то когда я пытаюсь запустить приложение двойным щелчком ничего не происходит. Сначала я подумал, что программа слишком быстро выполняется и я ничего не успеваю заметить. Но потом поставил в самом начале scanf("%d",i); Т.е. в этом месте она должна ждать пока я чего-нибудь введу. Но повторяется та же картина. А если запускать через терминал:

    комманда dir выводит, что в текущем каталоге есть исполняемый файл proga, когда я ввожу exec proga мне выдает bash: exec: proga: not found. Что не так, подскажите пожалуйста! Прилагаю скриншот.index.php?t=getfile&id=276&private=0

  7. Подскажите please, как сделать реализовать выбор между windows и linux перед загрузкой ОС? Раньше я ставил ASP Linux, так он мне сам красивый такой загрузчик сделал, где выбирать можно было. А сейчас Mandriva 2007 установил, а грузится все равно windows.

×
×
  • Создать...