Linux读取目录文件

1、opendir与readdir函数

(1)、opendir打开一个目录后得到一个DIR类型的的指针给readdir使用。

(2)、readdir函数调用一次后就会返回一个struct dirent类型的指针,这个指针指向一个结构体变量,这个结构体变量里面记录了一个目录项(所谓目录项就是目录中的一个子文件)。

(3)、readdir调用一次只能读出一个目录项,要想读出目录中的所有目录项必须多次调用readdir函数。readdir函数内部会记住哪个目录项已经被读过了哪个还没读,所以多次调用后不会重复返回已经返回过的目录项。当readdir函数返回NULL时就代表目录中的所有目录项已经读完了。

2、可重入函数介绍

(1)、有些函数是可重入的有些是不可重入的。可重入函数可以理解为是能被中断的函数,并且它被中断返回后也不会出现什么错误。不可重入函数可以理解为如果函数被中断的话,就会出现不可预料的错误。这是因为函数中使用了一些系统资源,比如全局变量区,中断向量表之类的。比如多个进程同时对一个文件进行写操作,如果没有同步机制的话,对文件的写入就会变得难以控制。

(2)、readdir函数和我们之前接触的一些函数是不同的,首先readdir函数直接返回了一个结构体变量指针,因为readdir内部申请了内存并且给我们返回了地址。多次调用readdir时,其实readdir内部并不会重复申请内存而是使用第一次调用readdir时分配的那个内存。这种设计方法是readdir不可重入的关键。

(3)、readdir在多次调用时是有关联的,这个关联也表明readdir函数是不可重入的。

(4)、库函数中有一些函数当年刚开始提供的时候都是不可重入的,后来意识到这种方式不安全,所以重新封装了C库,提供了对应的可重复版本(一般是不可重入版本函数名+ _r )。

原文地址:https://www.cnblogs.com/jiangtongxue/p/11196399.html

时间: 2024-10-03 14:37:57

Linux读取目录文件的相关文章

linux管理目录文件命令总结

一.文件和目录管理常用命令 目录操作命令:pwd.cd.ls.mkdir.du. 文件操作命令: touch.file.cp.rm.mv.which.find.ln 文件内容操作命令: cat.more.less.head.tail.wc.grep 归档及压缩命令: gzip.bzip2.tar 因为在linux系统中目录属于一种特殊文件,所以许多对文件进行操作的命令对目录也同样适用. 二.命令具体用法 1.pwd命令 用途:查看工作目录 使用方法:直接在命令行下输入pwd .pwd命令一般单独

linux web目录文件全备脚本

#!/bin/bash#文件全备脚本#删除7天以前的文件#调用方法#yxy #www.sql8.net#[email protected]#2014-08-20#请主意所有路径都为全整目录#sh filebak.sh  要备份的目标目录 备份文件存放路径 保留文件的天数  #sh filebak.sh  /home/wd/wd/wd /home/wd/wd/bakup 7#sh filebak.sh  /home/dd/dd/dd /home/dd/dd/bakup 7 #pathpath=$1

linux读取profile文件和bashrc文件的情况

最近研究linux,对linux的profile文件和bashrc文件有些不清楚,于是深入研究了一下. 如果想知道这些文件什么时候被执行,还需要知道几个关于shell的小知识.(CentOS6.5 linux) 1.login shell,登录shell,即init 3启动linux后,需要输入用户名和密码,进入的shell就是loginshell. 注意:在shell里使用su - user_name 切换用户,登录的shell也是login shell login shell会读取的文件有:

【Linux】目录文件权限的查看和修改【转】

转载自:http://zhaoyuqiang.blog.51cto.com/6328846/1214718 ------------------------------------------------------------------------------------------------------------------------------------------ =========================================================

linux 读取部分文件内容

一般我们在linux上读取文件,是用vi工具,如果是写shell 脚本时,一般式通过cat 再 使用管道来达到流的处理. 但如果文件太大,单纯的cat 可能会使用过多的内存,而且实现上还需要后续的加工,不大可取. 下面我分享两个方法来读取部分文件. 方法一 sed -n "10,20p" /opt/chenfool.txt 方法二 awk 'NR==10,NR==20{print}' /opt/chenfoo.txt 上面两个命令就是读取/opt/chenfool.txt 文件的10到

linux更改目录文件的拥有者和拥有组(使用chown实现)

在linux里是可以通过ps 和grep来查询到的.如下图中使用ps aux|grep nginx来查询nginx进程使用什么账户运行的: 可见是使用的www账户运行的.那么对应的网站根目录及其下面的文件目录的拥有者和拥有组都应该是www,只有这样网站访问才会正常. 使用ls –l来查询文件目录的拥有者和拥有组,如下图: 使用chown可以修改权限:chown -R www.www /alidata/www/phpwind/即可将目录/alidata/www/phpwind下的所有文件和目录的拥

递归读取目录文件下的所有文件

---恢复内容开始--- 1.读取e盘下的文件夹app下的所有文件(不是文件夹)需要读取的是(xx.txt;yytxt,gg.txt)目录如图 e:app app1 app1.1   xx.txt app1.2  yy.txt app2 app2   gg.txt 2.代码 package com.tansun; import java.io.File; import java.util.ArrayList; import java.util.List; public class FileRea

Linux:目录&文件基本操作

- 表示上一次所在目录,- 通常表示当前用户的"home"目录.使用 pwd 命令可以获取当前所在路径(绝对路径). 新建文件:touch test创建目录:mkdir -p father/son/grandson复制文件:cp test father/son/grandson复制目录:cp -r father family删除文件:rm test删除目录:rm -f test移动文件:mv file1 Documents重命名文件:mv file1 myfile输出文件内容:cat

python 读取目录文件

#获取脚本所在目录 print os.path.split( os.path.realpath( sys.argv[0] ) )[0] #获取脚本运行目录 print os.getcwd() 本地目录读取 import os.path import sys root='/home/work/' for parent,dirnames,filenames in os.walk(root):     for filename in filenames:         path=os.path.jo