The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Передача данных в запущенную программу, !*! Fagot, 16-Ноя-06, 22:07  [смотреть все]
Доброго времени суток.
Есть ли какие нибудь способы передачи данных в программу, во время её исполнения.
Сейчас исползую локальный сокет PF_LOCAL, а есть другие способы.
  • Передача данных в запущенную программу, !*! f00l, 06:47 , 17-Ноя-06 (1)
    >Доброго времени суток.
    >Есть ли какие нибудь способы передачи данных в программу, во время её
    >исполнения.
    >Сейчас исползую локальный сокет PF_LOCAL, а есть другие способы.

    есть еще FIFO, работа через обшедоступный сегмент памяти
      и через файл записаный в память.

  • Передача данных в запущенную программу, !*! Boris Polevoy, 10:08 , 17-Ноя-06 (2)
    >Доброго времени суток.
    >Есть ли какие нибудь способы передачи данных в программу, во время её
    >исполнения.
    >Сейчас исползую локальный сокет PF_LOCAL, а есть другие способы.

    Читайте классику:
    Cтивенс У. Р. "UNIX: взаимодействие процессов"

    В современных ОС есть дополнительные способы, не описанные в данной книге, например, передача сообщений. Все зависит от решаемых задач и условий выполнения процессов.

  • Передача данных в запущенную программу, !*! Fagot, 11:32 , 18-Ноя-06 (3)
    Сделал всё через fifo. Возникла проблема, когда передаю данные в программу,то программы останавливается. Вываливается сообщение [1]+ Stopped. Это если запустить сервер так: ./server &
    А если запустить в разных терминалах то всё без проблем работать будет.

    Вот программа принимающая сообщение (server):
    #include <stdio.h>
    #include <sys/stat.h>
    #include <sys/types.h>
    #include <unistd.h>
    #include <fcntl.h>

    #define my_fifo "/tmp/test.fifo"

    int main()
    {
        char buf[128];
        umask(0);
        mknod(my_fifo, S_IFIFO | 0666, 0);
        int fp = open(my_fifo, O_RDWR);
        while(1)
        {
            if(read(fp, &buf, sizeof(buf)) != -1)
                printf("BUF: %s\n", buf);
        }
        close(fp);
        return 0;
    }

    Программа передающая сообщение:
    #include <stdio.h>
    #include <sys/stat.h>
    #include <sys/types.h>
    #include <unistd.h>
    #include <fcntl.h>

    #define my_fifo "/tmp/test.fifo"

    int main(int argc, char **argv)
    {
        int fp = open(my_fifo, O_RDWR);
        char *buff = "Hello, world!";
        write(fp, &buff, strlen(buff));
        close(fp);
        return 0;
    }




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру