私はこれをやる方法がわからないので、大きなトラブルを抱えています。 私はコミニケーションできるプロセスを2つだけ作成する必要があります。 コードはこのコードでパイプを使用するにはどうすればよいですか?
/* Wrappers */
this->sock_fd = this->w_socket();
this->w_bind();
this->w_listen();
std::cout << "[info] Server is running..." << std::endl;
while(1)
{
/*Connection stuff */
struct sockaddr_in client_addr;
int client_fd = this->w_accept(&client_addr);
char client_ip[64];
int client_port = ntohs(client_addr.sin_port);
inet_ntop(AF_INET, &client_addr.sin_addr, client_ip, sizeof(client_ip));
std::cout << "[info] Connection from (" << client_ip
<< ", " << client_port << ")" << std::endl;
/*Login manager*/
...
/* Crate PID */
int pid = fork();
if (pid == 0)
{
close(this->sock_fd);
this->manage(client_fd, client_ip, client_port);
exit(0);
}
/* End connection */
close(client_fd);
}
です。ログインマネージャの後にクライアントが正常に認証されると、サーバーにデータを送信できます。 クライアントが接続されていて、別のクライアントがログインしている場合、2番目のクライアントは最初のクライアントを「接続が解除されました」というメッセージで起動する必要があります。 これを行うにはどのようにフォークとパイプを使用できますか? 私はこれについて何かを読もうとしましたが、少し混乱しています。
ありがとうございます。
http://en.wikipedia.org/wiki/SIGPIPE – sehe