社区
Linux/Unix社区
帖子详情
linux中如何设置写文件超时
xSTONEx
2014-07-13 11:38:31
各位大神,linux中如果向磁盘中写文件时,受到外界因素的干扰使得写入速度变慢,如何设置写超时时间;,当写速度下将时,直接跳出写操作?
另看网上有资料说阻塞、非阻塞模式,我的理解是阻塞模式是你本来想写100字符,但缓存中不足100字符,因此无法返回,非阻塞是有多少写多少,完事返回,与我上述的问题不符,不知理解是否正确。
在线等大神赐教
...全文
734
10
打赏
收藏
linux中如何设置写文件超时
各位大神,linux中如果向磁盘中写文件时,受到外界因素的干扰使得写入速度变慢,如何设置写超时时间;,当写速度下将时,直接跳出写操作? 另看网上有资料说阻塞、非阻塞模式,我的理解是阻塞模式是你本来想写100字符,但缓存中不足100字符,因此无法返回,非阻塞是有多少写多少,完事返回,与我上述的问题不符,不知理解是否正确。 在线等大神赐教
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
colddown
2014-07-14
打赏
举报
回复
之前想的应该不对。你的写数据应该先到达page cache,之后write就返回了,不应当block。如果设备很慢,可能导致page cache里有大量dirty page并占用大量内存。你是想解决这个问题吗?
xSTONEx
2014-07-14
打赏
举报
回复
对的,本身产品的CPU到SATA这边的走线就不好,信号质量差,高低温等环境因素干扰的话,情况更糟,但这些因素都是不可改变的,只能在程序里做些牺牲。至于一秒一个字节只是假设,具体是多少也无法检测,总之是很慢,所以才想在很难写入的时候跳出写盘。 我看了下,非阻塞模式是针对l类似socket这样的终端文件描述符,对普通文件应该没用吧。
yuqing89320
2014-07-14
打赏
举报
回复
写入磁盘速度,可以软件控制么,貌似不可已 你说的受外界影响速度变慢,指的时温度过高之类的么 写入调度应该是系统调度控制的吧,不可能一秒只写一个字节,过慢,用select监听应该返回EAGAIN 个人理解,仅供参考
xSTONEx
2014-07-14
打赏
举报
回复
首先感谢楼上的大侠 我简化完程序后,应用层运行两个线程,一个采集数据,一个写数据,当采集线程写满缓存后给写数据线程发信号量, 从测试的结果看运行几个小时后,CPU达到100%,有连续几个释放信号量的打印,没有接收信号量的打印(正常情况释放和接收的打印是交替的) 由此可以看出是在write里一直无法返回。想解决的问题是发生上述情况是让write在规定的时间返回,系统可以正常运行。
colddown
2014-07-14
打赏
举报
回复
非阻塞情况下write应该立即返回。不是很确定用这个方法能解决你的问题,不过可以试试
xSTONEx
2014-07-13
打赏
举报
回复
自己先顶一下
xSTONEx
2014-07-13
打赏
举报
回复
1.select(...);//设置超时时间 . . . 2write(...);//写文件 按上述的步骤,如果写的很慢,write会返回吗? 之前用过select设置过socket的超时收发,但对select工作原理还是理解的不透彻,能详解写吗 谢谢。
colddown
2014-07-13
打赏
举报
回复
对于写文件select应该是当内核缓冲区有空间时返回,如果很久没有返回说明下面的数据传输有问题,导致缓冲区没用空闲,select就可以超时
xSTONEx
2014-07-13
打赏
举报
回复
我也想过用select,但个人理解select设置的超时时间是这样的,比如我原先要写100个字节,但缓存中就50个字节,所以阻塞了,通过select设置的超时时间可以退出,不知道我的理解是否正确 现在遇到的问题是缓存中有100个字节要写,但写盘速度一下变慢了,一秒一个字节(比如 说),此时该怎么做才能设置时间,写不完就不写了呢?
colddown
2014-07-13
打赏
举报
回复
可以用select函数,同时设置超时。如果在超时前文件还未准备好写就可以退出。
linux
串口操作及
设置
详解
串口操作需要的头
文件
#include /*标准输入输出定义*/ #include /*标准函数库定义*/ #include /*Unix 标准函数定义*/ #include #include #include /*
文件
控制定义*/ #include /*PPSIX 终端控制定义*/ #include /*错误号定义*/ 1.打开串口 在前面已经提到
linux
下的串口访问
springboot
设置
请求
超时
超时
设置
默认的
超时
设置
默认是没有
超时
限制的,见SimpleClientHttpRequestFactory 类的 private int connectTimeout = -1; // -1 表示不
超时
private int readTimeout = -1; // -1 表示不
超时
1.3版本之前 @Configuration public class RestTemplateConfiguration { @Bean public RestTemplate restTempla
linux
socket默认
超时
时间
设置
,
linux
下socket connect
超时
设置
今天发现自己的系统存在很严重缺陷,当前台关闭的时候后台就无法正常工作,原因很好定位,后台的socket连接
超时
时间过长,系统默认时间好像是75秒,于是找资料,根据下边文章
中
的内容解决了,把
超时
时间设为5秒后,感觉好多了。看来还有好多东西需要慢慢挖掘阿!如何
设置
socket的Connect
超时
(
linux
)[From]http://dev.cbw.com/c/c/200510195601_42925...
Linux
设置
终端
超时
时间
linux
设置
终端
超时
时间1、安全
设置
方式2、快捷
设置
方式 1、安全
设置
方式 为了增强
Linux
系统的安全性,我们需要在用户输入空闲一段时间后自动断开,这个操作可以由
设置
TMOUT值来实现。将以下字段加入到/etc/profile
中
即可(对所有用户生效)。 export TMOUT=900 #
设置
900秒内用户无操作就字段断开终端 readonly TMOUT # 将值
设置
为re...
Linux/Unix社区
23,224
社区成员
74,536
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章