The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Передача данных в запущенную программу"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Передача данных в запущенную программу"  
Сообщение от Fagot email on 16-Ноя-06, 22:07 
Доброго времени суток.
Есть ли какие нибудь способы передачи данных в программу, во время её исполнения.
Сейчас исползую локальный сокет PF_LOCAL, а есть другие способы.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "Передача данных в запущенную программу"  
Сообщение от f00l email(ok) on 17-Ноя-06, 06:47 
>Доброго времени суток.
>Есть ли какие нибудь способы передачи данных в программу, во время её
>исполнения.
>Сейчас исползую локальный сокет PF_LOCAL, а есть другие способы.

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

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

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

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

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

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Передача данных в запущенную программу"  
Сообщение от Fagot email on 18-Ноя-06, 11:32 
Сделал всё через 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;
}

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Передача данных в запущенную программу"  
Сообщение от gyn61 (ok) on 18-Ноя-06, 15:48 
>    while(1)
>    {
>        if(read(fp, &buf, sizeof(buf)) !=
>-1)
>            
>printf("BUF: %s\n", buf);
>    }

Вот из-за этого printf и Stopped.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




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

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