515300276 发表于 2020-8-20 13:37:47

fopen打开文件

使用fopen竟然不能够同时打开同一个文件,略显尴尬啊,

eric2013 发表于 2020-8-20 14:02:55

对一个文件,连续fopen两次吗?

515300276 发表于 2020-8-20 14:10:48

eric2013 发表于 2020-8-20 14:02
对一个文件,连续fopen两次吗?

对的啊,应用就是系统一直打开日志文件记录,网页随时可以去读取日志的内容,之前用项目用的fatfs倒是没什么问题,现在用rl-flashfs了这块就不行了,看了那个stdio.h里面有个freopen试试,不行就整体改改用个互斥信号处理了

eric2013 发表于 2020-8-20 14:36:10

515300276 发表于 2020-8-20 14:10
对的啊,应用就是系统一直打开日志文件记录,网页随时可以去读取日志的内容,之前用项目用的fatfs倒是没 ...

加上了RTX后,本身就已经带了互斥,你打开后,不就不可以重复打开了

515300276 发表于 2020-8-20 14:47:03

eric2013 发表于 2020-8-20 14:36
加上了RTX后,本身就已经带了互斥,你打开后,不就不可以重复打开了

互斥的不应该是底层的IO操作吗,文件句柄也互斥不能打开了{:16:},实现方式也看不到,我改成使用互斥量操作了,不过每次写日志都必须要关闭文件句柄了,应该也不会有什么大问题

eric2013 发表于 2020-8-20 14:54:44

515300276 发表于 2020-8-20 14:47
互斥的不应该是底层的IO操作吗,文件句柄也互斥不能打开了,实现方式也看不到,我改成使用互斥量操 ...

我明白了你的意思,你之前的操作有点随意,是那个任务需要记录日,都可以打开那个文件入。。

我前面说的互斥主要还是多任务情况下的时候,api的函数互斥。对于同一个文件操作你简单点封装一个函数就行,如果文件已经打开返回标志1,如果没有打开返回标志0即可,自己实现也很简单的。



515300276 发表于 2020-8-20 15:22:46

eric2013 发表于 2020-8-20 14:54
我明白了你的意思,你之前的操作有点随意,是那个任务需要记录日,都可以打开那个文件入。。

我前面说 ...

之前的操作是日志文件在运行期间一直都是打开的,多任务调用这个函数都是有信号量作了互斥操作的,已经搞好了可以了,最近用这个遇到问题就上来问了,每次大佬都是很快就回复,谢谢了{:3:}
页: [1]
查看完整版本: fopen打开文件