小编Nik*_*nko的帖子

fork()分支超过预期?

考虑以下代码:

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

int main(void)
{
    int i;
    for(i = 0; i < 2; i++)
    {
        fork();
        printf(".");
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

该程序输出8个点.怎么可能呢?不应该有6个点吗?

c c++ fork

186
推荐指数
2
解决办法
7467
查看次数

无法从boost :: asio :: io_service :: run中捕获异常

我在boost :: asio上有一个TCP服务器,它监听连接并在获取后开始使用boost :: asio :: write在循环中发送数据块.

bool TcpServer::StartTcpServer(std::shared_ptr<boost::asio::io_service>  io_service)
{
    m_ioservice = io_service;
    m_acceptor.reset(new boost::asio::ip::tcp::acceptor(*m_ioservice, boost::asio::ip::tcp::endpoint(boost::asio::ip::tcp::v4(), m_port)));
    m_socket = std::unique_ptr<boost::asio::ip::tcp::socket>(new boost::asio::ip::tcp::socket(*m_ioservice));

    m_socket->close();
    m_acceptor->async_accept(*m_socket, m_peer_endpoint,   boost::bind(&TcpServer::AcceptHandler, this, boost::asio::placeholders::error)); 

    m_io_thread.reset(new std::thread([this]{
    try
    {
        this->m_ioservice->run();
    }
    catch(const boost::system::system_error & err){print logs}
    catch(...){print another logs}
    }));
}

void TcpServer::AcceptHandler(const boost::system::error_code &ec)
{
    while(true)
    {
         try
         {
             boost::asio::write( *m_socket, boost::asio::buffer(data->c_str(), data->size()), boost::asio::transfer_all());  
         } 
         catch(const boost::system::system_error & err){print logs}
         catch(...){print another logs}
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我手动停止接收器,则会抛出并正确处理损坏管道的异常.但有时会发生破裂的管道(我认为连接不良的原因),异常奇迹般地落在所有捕获中并且应用程序终止:

terminate called after throwing an instance of 'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::system::system_error> >'
Run Code Online (Sandbox Code Playgroud)

检查核心我发现它发生在boost …

c++ boost boost-asio

9
推荐指数
1
解决办法
2223
查看次数

以Django形式显示和隐藏动态字段

我在Django中有一个表单:

views.py:

class SearchForm(forms.Form):
    type = forms.ChoiceField(choices = ...)
    list1 = forms.ModelMultipleChoiceField(...)
    list2 = forms.ModelMultipleChoiceField(...)
Run Code Online (Sandbox Code Playgroud)

home.htm:

<td valign='top'>{{ form.type }}</td>
<td valign='top'>{{ form.list1 }}</td>
<td valign='top'>{{ form.list2 }}</td>
<td valign='top'><input type="submit" value="Find" /></td>
Run Code Online (Sandbox Code Playgroud)

如果type为1,我希望显示list1元素并隐藏list2,反之亦然,如果type为2,我希望它们隐藏并动态显示,而无需重新加载页面或与服务器进行任何交互.

我相信Javascript在这里很有用,但我不知道.

javascript forms django

5
推荐指数
2
解决办法
8739
查看次数

同一程序中是否可以有两个升压受体?

我的 boost 服务器意外停止接受传入连接,因为我团队中的其他人在不同线程(使用不同端口)中使用 boost 接受器创建了另一个服务器?这是正常的吗?如何让两个服务器独立工作而不互相干扰?

已解决:接受器与此无关,这家伙在某个地方启动了无限循环,阻塞了其他组件。我想这就是当团队工作不协调时会发生的情况:( 对不起,伙计们,sehe 一如既往地是最好的

c++ boost boost-asio

2
推荐指数
1
解决办法
267
查看次数

标签 统计

c++ ×3

boost ×2

boost-asio ×2

c ×1

django ×1

fork ×1

forms ×1

javascript ×1