|
我看源码中有
dfs_lock()
dfs_unlock()
这两个函数,但是在cat、copy的代码中没有使用,我同时打开几个文件会不会出问题啊- void cat(const char* filename)
- {
- rt_uint32_t length;
- char buffer[81];
- if (dfs_file_open(&fd, filename, DFS_O_RDONLY) < 0)
- {
- rt_kprintf("Open %s failed\n", filename);
- return;
- }
- do
- {
- rt_memset(buffer, 0, sizeof(buffer));
- length = dfs_file_read(&fd, buffer, sizeof(buffer)-1 );
- if (length > 0)
- {
- rt_kprintf("%s", buffer);
- }
- }while (length > 0);
- dfs_file_close(&fd);
- }
- FINSH_FUNCTION_EXPORT(cat, print file e.g:cat("/fileName.txt"))
- #define BUF_SZ 4096
- void copy(const char* src, const char* dst)
- {
- struct dfs_fd src_fd;
- rt_uint8_t *block_ptr;
- rt_uint32_t read_bytes;
- block_ptr = rt_malloc(BUF_SZ);
- if (block_ptr == RT_NULL)
- {
- rt_kprintf("out of memory\n");
- return;
- }
- if (dfs_file_open(&src_fd, src, DFS_O_RDONLY) < 0)
- {
- rt_free(block_ptr);
- rt_kprintf("Read %s failed\n", src);
- return;
- }
- if (dfs_file_open(&fd, dst, DFS_O_WRONLY | DFS_O_CREAT) < 0)
- {
- rt_free(block_ptr);
- dfs_file_close(&src_fd);
- rt_kprintf("Write %s failed\n", dst);
- return;
- }
- do
- {
- read_bytes = dfs_file_read(&src_fd, block_ptr, BUF_SZ);
- if (read_bytes > 0)
- {
- dfs_file_write(&fd, block_ptr, read_bytes);
- }
- } while (read_bytes > 0);
- dfs_file_close(&src_fd);
- dfs_file_close(&fd);
- rt_free(block_ptr);
- }
- FINSH_FUNCTION_EXPORT(copy, copy source file to destination file e.g:copy("/xiaoshuo.txt","/MY/xiaoshuo.txt"))
复制代码 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
|