社区
Linux/Unix社区
帖子详情
linux中如何设置写文件超时
xSTONEx
2014-07-13 11:38:31
各位大神,linux中如果向磁盘中写文件时,受到外界因素的干扰使得写入速度变慢,如何设置写超时时间;,当写速度下将时,直接跳出写操作?
另看网上有资料说阻塞、非阻塞模式,我的理解是阻塞模式是你本来想写100字符,但缓存中不足100字符,因此无法返回,非阻塞是有多少写多少,完事返回,与我上述的问题不符,不知理解是否正确。
在线等大神赐教
...全文
593
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函数,同时设置超时。如果在超时前文件还未准备好写就可以退出。
1小时搞定
Linux
系统安全知识体系
3、
Linux
文件
系统安全(
Linux
文件
系统、
文件
系统类型、
文件
和目录安全、目录权限
设置
) 4、日志分析(
Linux
日志、系统热值的分类、日志
文件
工具、日志分析工具、日志格式、日志分析)
linux
ssh不
超时
时间
设置
,如何
设置
SSH服务
中
终端的
超时
时间或不
超时
当访问终端在windows上时,各终端软件,如,putty,SecureCRT等,大多支持
设置
向服务器端自动发送消息,来防止终端定期
超时
。其实,服务器端也支持类似的
设置
,从服务器的角度防止链接
超时
。并且,当终端在Ubuntu 等...
linux
超时
tcp,
Linux
中
TCP
设置
syn
超时
时间
无论您使用什么语言或客户端库,您都应该能够在网络套接字操作上
设置
超时
,通常将其拆分为连接
超时
、读取
超时
和
写
入
超时
。但是,尽管您应该能够使这些
超时
尽可能小,但连接
超时
尤其具有任何给定内核的有效最大值。在...
linux
设置
ssh连接
超时
时间
linux
设置
ssh连接
超时
时间
linux
命令
超时
设置
,如何在
Linux
中
运行具有时间限制(
超时
)的命令
在这种情况下,我们希望
设置
一个时间范围,在该时间范围内,完成该过程的命令杆将
中
止。这可以通过使用以下选项来实现。使用
超时
工具如果命令行不能在给定的时间内完成,
超时
工具将强制执行
中
止命令。下面是语法和...
Linux/Unix社区
23,127
社区成员
74,510
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章