2012-06-05 4 views
0

Недавно я начал изучать IPC, и у меня есть некоторые проблемы. Я написал программу, которая создает два процесса, которые сообщаются через трубу, как это:Связь с сервером/клиентом по трубе

#include <stdio.h> 
#include <stdlib.h> 
#include <errno.h> 
#include <sys/types.h> 
#include <unistd.h> 


int main(void) 
{ 
    int pfds[2]; 
    char buf[30]; 
    pipe(pfds); 
    if (!fork()) 
    { 
     printf(" CHILD: writing to the pipe\n"); 
     write(pfds[1], "test", 5); 
     printf(" CHILD: exiting\n"); 
     exit(0); 
    } 
    else 
    { 
     printf("PARENT: reading from pipe\n"); 
     read(pfds[0], buf, 5); 
     printf("PARENT: read \"%s\"\n", buf); 
     wait(NULL); 
    } 
    return 0; 
} 

Извините за не обрабатывает возможные ошибки, которые я написал это так для простоты.

Это отлично работает, но мой вопрос: есть ли возможность иметь две программы - сервер/клиент (два отдельных исполняемых файла - не родительский процесс/дочерние процессы), которые общаются через канал? Как вы можете через FIFO?

Спасибо!

+0

mkfifo() может удовлетворить ваши потребности – waitingkuo

+0

Да, я знаю, я знаю, как это сделать через FIFO, но мне интересно, можно ли это сделать и через трубу. –

ответ

1

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

Для связи между двумя отдельными процессами вы должны использовать именованные каналы (FIFO).

+0

Спасибо, мне нужно подтверждение :) –

Смежные вопросы