--- Server ---
Kod: Zaznacz cały
#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
#include <fcntl.h>
#define FILE_MODE (S_IRUSR | S_IWUSR)
#define SERWER_FIFO "/tmp/S_FIFO"
#define KLIENT_FIFO "/tmp/K_FIFO"
#define MAX 100
int main(void)
{
FILE *fp;
char buf_serw[MAX], buf_kl[MAX];
int ch, writefd, readfd;
mkfifo(SERWER_FIFO, FILE_MODE);
mkfifo(KLIENT_FIFO, FILE_MODE);
while(1)
{
fork();
readfd = open(KLIENT_FIFO, O_RDONLY);
read(readfd, buf_kl, MAX);
if ((fp = fopen(buf_kl, "r")) == NULL)
{
printf("Nie mozna otworzyc %s\n", buf_kl);
exit(1);
}
while((ch = getc(fp)) != EOF)
{
putc(ch, buf_serw);
}
fclose(fp);
wait();
close(readfd);
unlink(SERWER_FIFO);
}
return(0);
}
Kod: Zaznacz cały
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
#include <fcntl.h>
#define FILE_MODE (S_IRUSR | S_IWUSR)
#define SERWER_FIFO "/tmp/S_FIFO"
#define KLIENT_FIFO "/tmp/K_FIFO"
#define MAX 100
int main(int argc, char *argv[])
{
FILE *fp;
char buf_kl[MAX], buf_serw[MAX];
int id, ch, writefd, readfd;
mkfifo(SERWER_FIFO, FILE_MODE);
mkfifo(KLIENT_FIFO, FILE_MODE);
writefd = open(SERWER_FIFO, O_WRONLY);
write(writefd, buf_kl, MAX);
id = getpid();
strcpy(buf_kl, argv[1]);
readfd = open(KLIENT_FIFO, O_RDONLY);
read(readfd, buf_serw, MAX);
sprintf("%s\n", buf_serw, id);
return(0);
}