added semaphore and shared memory to print without superposition between parent and child process

This commit is contained in:
hugogogo
2022-08-22 14:52:31 +02:00
parent 5225e3258b
commit f7b31c7db7
14 changed files with 127 additions and 65 deletions

View File

@@ -9,7 +9,7 @@ void Webserv::_close_client(int fd)
{
if (*it == fd)
{
std::cout << family << "| (" << std::setw(2) << it->get_cl_fd() << ") close client fd " << fd << std::endl;
print_secure(it->get_cl_fd(), "close client fd " + ::itos(fd) + "\n");
if (::close(fd) == -1)
std::perror("err close()");
_close_client_cgi_pipes(&(*it));
@@ -24,25 +24,25 @@ void Webserv::_close_client_cgi_pipes(Client *client)
{
if (client->cgi_state)
{ // No need to reset the fd to -1 normaly
std::cerr << family << "| (" << std::setw(2) << client->get_cl_fd() << ") close pipe wtc [" << client->cgi_pipe_w_to_child << "]\n";
print_secure(client->get_cl_fd(), "close pipe wtc [" + ::itos(client->cgi_pipe_w_to_child) + "]\n");
if (client->cgi_pipe_w_to_child != -1)
if (::close(client->cgi_pipe_w_to_child) == -1)
std::perror("err close()");
client->cgi_pipe_w_to_child = -1;
std::cerr << family << "| (" << std::setw(2) << client->get_cl_fd() << ") close pipe rfc [" << client->cgi_pipe_r_from_child << "]\n";
print_secure(client->get_cl_fd(), "close pipe rfc [" + ::itos(client->cgi_pipe_r_from_child) + "]\n");
if (client->cgi_pipe_r_from_child != -1)
if (::close(client->cgi_pipe_r_from_child) == -1)
std::perror("err close()");
client->cgi_pipe_r_from_child = -1;
std::cerr << family << "| (" << std::setw(2) << client->get_cl_fd() << ") close pipe wtp [" << client->cgi_pipe_w_to_parent << "]\n";
print_secure(client->get_cl_fd(), "close pipe wtp [" + ::itos(client->cgi_pipe_w_to_parent) + "]\n");
if (client->cgi_pipe_w_to_parent != -1)
if (::close(client->cgi_pipe_w_to_parent) == -1)
std::perror("err close()");
client->cgi_pipe_w_to_parent = -1;
std::cerr << family << "| (" << std::setw(2) << client->get_cl_fd() << ") close pipe rfp [" << client->cgi_pipe_r_from_parent << "]\n";
print_secure(client->get_cl_fd(), "close pipe rfp [" + ::itos(client->cgi_pipe_r_from_parent) + "]\n");
if (client->cgi_pipe_r_from_parent != -1)
if (::close(client->cgi_pipe_r_from_parent) == -1)
std::perror("err close()");
@@ -63,7 +63,7 @@ void Webserv::_close_all_clients_fd()
std::vector<Client>::iterator it_end = _clients.end();
while (it != it_end)
{
std::cout << family << "| (" << std::setw(2) << it->get_cl_fd() << ") close client fd " << it->get_cl_fd() << std::endl;
print_secure(it->get_cl_fd(), "close client fd " + ::itos(it->get_cl_fd()) + "\n");
if (::close(it->get_cl_fd()) == -1)
std::perror("err close()");
++it;