小编eat*_*ter的帖子

任何boost :: asio异步调用会自动超时吗?

我有一个boost::asio异步使用的客户端和服务器.我想添加一些超时来关闭连接,如果出现问题可能会重试.

我最初的想法是,每当我调用一个async_函数时,我也应该deadline_timer在我希望异步操作完成后启动一个到期.现在我想知道在每种情况下是否都是必要的.

例如:

  • async_resolve大概使用系统的解析器,它具有内置的超时(例如RES_TIMEOUT,resolv.h可能被配置覆盖/etc/resolv.conf).通过添加我自己的计时器,我可能会与用户希望他的解析器工作的方式发生冲突.

  • 因为async_connect,connect(2)系统调用内置了某种超时

  • 等等

那么哪些(如果有的话)async_调用可以保证在"合理"的时间范围内调用它们的处理程序?如果一个操作[can | do]超时,那么处理程序会传递basic_errors::timed_out错误或其他什么?

c++ boost-asio

19
推荐指数
2
解决办法
7729
查看次数

在嵌入式Linux上安全地写入紧凑型闪存

我正在开发一个从紧凑型闪存和tmpfs运行的嵌入式Linux系统.闪存以只读方式安装,通常应保持这种状态,但偶尔我需要向闪存写入内容.

写入闪存(通过PATA接口)时应该采取哪些预防措施?由于我无法回想起的原因,我正在使用ext4安装的文件系统barrier=1,data=ordered,nodelalloc,noatime,ro是否是一个可怕的想法?系统需要在零干预的情况下快速启动.我很想做tune2fs -c 0 -i 0.这是一个更糟糕的想法吗?

另外,当我写东西时,我显然需要重新安装flash读写,执行写操作,然后重新安装只读.问题是有几个不同的进程(c ++二进制和shell脚本)可能需要这样做.很明显,每个进程不加选择地重新安装文件系统只读它是一个坏主意.

协调这个的最佳方法是什么?flock看起来很有希 这是最好的方式,我需要担心什么?我不希望过时的锁阻止写入或使文件系统无限期写入.

澄清:通过"偶尔"写作,我的意思是系统可以使用多年而不需要写任何东西.什么东西写,它可能是几百字节.与此同时,系统需要承受不可预测的电源循环而无需任何干预.

linux filesystems embedded locking embedded-linux

8
推荐指数
1
解决办法
5958
查看次数

ash 是否与 bash 的“nullglob”选项等效?

如果 glob 模式不匹配任何文件,bash将只返回文字模式:

bash-4.1# echo nonexistent-file-*
nonexistent-file-*
bash-4.1#
Run Code Online (Sandbox Code Playgroud)

您可以通过设置nullglobshell 选项来修改默认行为,因此如果没有匹配项,您将获得一个空字符串:

bash-4.1# shopt -s nullglob
bash-4.1# echo nonexistent-file-*

bash-4.1# 
Run Code Online (Sandbox Code Playgroud)

那么在 中有一个等效的选项ash吗?

bash-4.1# ash
~ # echo nonexistent-file-*
nonexistent-file-*
~ # shopt -s nullglob
ash: shopt: not found
~ # 
Run Code Online (Sandbox Code Playgroud)

bash shell scripting shopt

6
推荐指数
2
解决办法
2488
查看次数