예제 #1
0
int main() {
    signal(SIGINT, die);
    pid_t my_pid = getpid();
    char server_fifo_name[500];
    char my_read_fifo_name[500]; // server's write end
    char my_write_fifo_name[500]; // server's read end
    CREATE_SERVER_FIFO_NAME(server_fifo_name);
    fprintf(stderr, "%s\n", server_fifo_name);
    CREATE_CLIENT_READER_NAME(my_read_fifo_name, my_pid);
    CREATE_CLIENT_WRITER_NAME(my_write_fifo_name, my_pid);
    fprintf(stderr, "Client is writing to %s\n", my_write_fifo_name);
    fprintf(stderr, "Client is reading from %s\n", my_read_fifo_name);
    int server_pipe = open(server_fifo_name, O_RDWR);
    write(server_pipe, &my_pid, sizeof(pid_t));
    close(server_pipe);
    int err = mkfifo(my_read_fifo_name, FIFO_PERMISSIONS);
    if (err) perror("Could not create fifo");
    err = mkfifo(my_write_fifo_name, FIFO_PERMISSIONS);
    if (err) perror("Could not create fifo");
    int my_read_fifo = open(my_read_fifo_name, O_RDWR);
    int my_write_fifo = open(my_write_fifo_name, O_RDWR);
    read_write_loop(my_read_fifo, my_write_fifo);
    close(my_read_fifo);
    close(my_write_fifo);
    remove(my_read_fifo_name);
    remove(my_write_fifo_name);
}
예제 #2
0
int
main(int argc, char *argv[])
{
	int server_sock;
	int client_sock;

	if (argc < 2) {
		errx(1, "Please enter socket parameter!");
	}

	signal(SIGPIPE, SIG_IGN);
	setlinebuf(stdout);

	server_sock = create_listening_socket(argv[1]);

	do {
		client_sock = accept_conn(server_sock);
	} while (read_write_loop(client_sock, stdout) != -1);

	return (0);
}