社区
Linux/Unix社区
帖子详情
linux中如何设置写文件超时
xSTONEx
2014-07-13 11:38:31
各位大神,linux中如果向磁盘中写文件时,受到外界因素的干扰使得写入速度变慢,如何设置写超时时间;,当写速度下将时,直接跳出写操作?
另看网上有资料说阻塞、非阻塞模式,我的理解是阻塞模式是你本来想写100字符,但缓存中不足100字符,因此无法返回,非阻塞是有多少写多少,完事返回,与我上述的问题不符,不知理解是否正确。
在线等大神赐教
...全文
666
10
打赏
收藏
linux中如何设置写文件超时
各位大神,linux中如果向磁盘中写文件时,受到外界因素的干扰使得写入速度变慢,如何设置写超时时间;,当写速度下将时,直接跳出写操作? 另看网上有资料说阻塞、非阻塞模式,我的理解是阻塞模式是你本来想写100字符,但缓存中不足100字符,因此无法返回,非阻塞是有多少写多少,完事返回,与我上述的问题不符,不知理解是否正确。 在线等大神赐教
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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
超时
tcp,
Linux
中
TCP
设置
syn
超时
时间
无论您使用什么语言或客户端库,您都应该能够在网络套接字操作上
设置
超时
,通常将其拆分为连接
超时
、读取
超时
和
写
入
超时
。但是,尽管您应该能够使这些
超时
尽可能小,但连接
超时
尤其具有任何给定内核的有效最大值。在...
linux
设置
ssh连接
超时
时间
linux
设置
ssh连接
超时
时间
linux
ssh不
超时
时间
设置
,如何
设置
SSH服务
中
终端的
超时
时间或不
超时
当访问终端在windows上时,各终端软件,如,putty,SecureCRT等,大多支持
设置
向服务器端自动发送消息,来防止终端定期
超时
。其实,服务器端也支持类似的
设置
,从服务器的角度防止链接
超时
。并且,当终端在Ubuntu 等...
Linux
设置
命令行界面
超时
退出
通过
设置
超时
退出,可以提高用户体验,避免用户因忘记关闭界面而造成的不便。如果用户在离开电脑时不关闭命令行界面,那么这些界面可能会占用系统资源,影响系统的运行效率。
设置
超时
退出可以确保在用户长时间不活动...
mysql
设置
超时
时间
linux
_如何配置MySQL数据库
超时
设置
最近备战京东双11,在配置MySQL的
超时
配置发现有很多地方可以
设置
。这么多
超时
的配置有什么影响,以及配置会有什么影响呢?今天的文章就让我来大家来分析一下。1. JDBC
超时
设置
connectTimeout:表示等待和MySQL...
Linux/Unix社区
23,217
社区成员
74,540
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章