导航:首页 > 操作系统 > linuxdtype

linuxdtype

发布时间:2023-05-17 09:20:36

linux C 中的文件夹遍历dirent d_type表明该文件的类型 跪求~~~

enum

{

DT_UNKNOWN = 0,

# define DT_UNKNOWN DT_UNKNOWN

DT_FIFO = 1,

# define DT_FIFO DT_FIFO

DT_CHR = 2,

# define DT_CHR DT_CHR

DT_DIR = 4,

# define DT_DIR DT_DIR

DT_BLK = 6,

# define DT_BLK DT_BLK

DT_REG = 8,

# define DT_REG DT_REG

DT_LNK = 10,

# define DT_LNK DT_LNK

DT_SOCK = 12,

# define DT_SOCK DT_SOCK

DT_WHT = 14

# define DT_WHT DT_WHT

};

这是d_type的枚举类型..........每个值表示一个类型..........4是目录,0是未知,1是管道,2是字符设备,8表示文件...............6是块设备..........其他的都如字面表示..........很容易区分.........

❷ linux 中find命令下的“-type f ”代表什么意思

-type 是根据文件类型进行查找,f 代表一个普通格式的文件
其他的还有:

d :目录
l :符号链接
b :块设备
c :字符设备
p :管道文件
s :Socket

❸ Linux里面type -a命令作用是什么

Linux中的pwd全称print working directory的缩写,打印当前工作目录,就是显示当前所在目录的意思。
通常提示符中就显示有当前目录,但是它只显示目录名而不是全路径,比如当前目录是/usr/local/etc和当前目录是/etc,提示符中都显示etc,这个时候用pwd命令就可以看清楚到底是哪个路径,这就是这个命令的作用。

❹ linux常用命令有哪些

linux 常用命令有:

❺ Linux下怎么读取多个进程的信息

首先说说DIR这一枣掘结构体,以下为DIR结构体的定义:

struct __dirstream
{
void *__fd;
char *__data;
int __entry_data;
char *__ptr;
int __entry_ptr;
size_t __allocation;
size_t __size;
__libc_lock_define (, __lock)
};

typedef struct __dirstream DIR;

DIR结构体类似于FILE,是一个内部结构,以下几个函数用这个内部结构保存当前正在被读取的目录的有关信息(摘自《UNIX环境高级编程(第二版)》)。函数 DIR *opendir(const char *pathname),即打开文件目录,返回的就是指向DIR结构体的指针,而该指针由以下几个函数使用:

struct dirent *readdir(DIR *dp);

void rewinddir(DIR *dp);

int closedir(DIR *dp);

long telldir(DIR *dp);

void seekdir(DIR *dp,long loc);

关于DIR结构,我们知道这么多就可以了,没必要去再去研究他的结构成员。
接着是dirent结构体,首先我们要弄清楚目录文件(directory file)的概念:这种文件包含了其他文件的名字以及指向与这些文件有关的信息的指针(摘自《UNIX环境高级编程(第二版)》)。从定义能够看出,dirent不仅仅指向目录,还指向目录中的具体文件,readdir函数同样也橘岩竖读取目录下的文件,这就是证据。以下为dirent结构体的定义:

struct dirent
{
long d_ino; /* inode number 索引节点号 */

off_t d_off; /* offset to this dirent 在目录文件中的偏移 */

unsigned short d_reclen; /* length of this d_name 文件名长 */

unsigned char d_type; /* the type of d_name 文件类型 */

char d_name [NAME_MAX+1]; /* file name (null-terminated) 文件名,最长255字符 */
}

然后是怎么使用它读取进程信息。可以用这些函数来读取/proc下的文件夹,然后做一个判断,只要文件夹的名字开头是1-9的,就进入目录读取其中的status文件,然圆大后输出信息。

代码

#include <stdio.h>
#include <dirent.h>
#include <unistd.h>
#include <stdlib.h>

typedef struct{
pid_t pid;
char name[256];//进程名称
int vmsize;//虚拟内存信息
}proc_info_st;//保存读取的进程信息

#define PROC_NAME_LINE 1//名称所在行
#define PROC_PID_LINE 4//pid所在行
#define PROC_VMSIZE_LINE 12//虚拟内存所在行
#define BUFF_LEN 1024 //行缓冲区的长度

#ifndef TRUE
# define TRUE 1
#endif

#ifndef FALSE
# define FALSE 0
#endif

void read_proc(proc_info_st* info,const char* c_pid);//读取进程信息
int read_line(FILE* fp,char* buff,int b_l,int l);//读取一行

int main()
{
//打开目录
DIR *dir;
struct dirent *ptr;
if (!(dir = opendir("/proc")))
return 0;
//读取目录
while (ptr = readdir(dir))
{//循环读取出所有的进程文件
if (ptr->d_name[0] > '0' && ptr->d_name[0] <= '9')
{
//获取进程信息
proc_info_st info;
read_proc(&info,ptr->d_name);//读取信息
printf("pid:%d\npname:%s\nvmsize:%d\n",info.pid,info.name,info.vmsize);
printf("\n\n");//再空两行
}
}
}

/**************************************************
**说明:根据进程pid获取进程信息,存放在proc_info_st结构体中
**
**输入:
** /proc_info_st* info 返回进程信息
** /char* c_pid 进程pid的字符串形式
**
**
**
*************************************************/
void read_proc(proc_info_st* info,const char* c_pid)
{
FILE* fp = NULL;
char file[512] = {0};
char line_buff[BUFF_LEN] = {0};//读取行的缓冲区

sprintf(file,"/proc/%s/status",c_pid);//读取status文件
if (!(fp = fopen(file,"r")))
{
printf("read %s file fail!\n",file);
return;
}

char name[32];
//先读取进程名称
if (read_line(fp,line_buff,BUFF_LEN,PROC_NAME_LINE))
{
sscanf(line_buff,"%s %s",name,(info->name));
}

fseek(fp,0,SEEK_SET);//回到文件头部
//读取进程pid
if (read_line(fp,line_buff,BUFF_LEN,PROC_PID_LINE))
{
sscanf(line_buff,"%s %d",name,&(info->pid));
}

fseek(fp,0,SEEK_SET);//回到文件头部
//读取进程vmsize
if (read_line(fp,line_buff,BUFF_LEN,PROC_VMSIZE_LINE))
{
sscanf(line_buff,"%s %d",name,&(info->vmsize));
}

fclose(fp);

}

/**************************************************
**说明:读取文件的一行到buff
**
**输入:
** /FILE* fp 文件指针
** /char* buff 缓冲区
** /int b_l 缓冲区的长度
** /l 指定行
**
**输出:
** /true 读取成功
** /false 读取失败
*************************************************/
int read_line(FILE* fp,char* buff,int b_l,int l)
{
if (!fp)
return FALSE;

char line_buff[b_l];
int i;
//读取指定行的前l-1行,转到指定行
for (i = 0; i < l-1; i++)
{
if (!fgets (line_buff, sizeof(line_buff), fp))
{
return FALSE;
}
}

//读取指定行
if (!fgets (line_buff, sizeof(line_buff), fp))
{
return FALSE;
}

memcpy(buff,line_buff,b_l);

return TRUE;
}
如果你想更深入的了解一些东西可以参考下http://www.linuxprobe.com/chapter-09.html,希望能对你有帮助

❻ linux 判断一个目录是不是为空的

while(dq = readdir(dir)){
if(strcmp(dq->d_name,".")==0||strcmp(dq->d_name,"..")==0)
continue;//这里可以忽略"."和".."
else if(dq->d_type == DT_DIR){
printf("目录:%s\n",dq->d_name);
char buf[256]={};
sprintf(buf,"%s/%s",path,dq->d_name);
rmdir(buf);
del_dir(buf);
}

else
printf("文件:%s\n",dq->d_name);
}这里是遍历整个目录的代码
给我13亿个赞,不要多

❼ Linux里面find加不加type区别是什么

题主你好,

给题主举个例子吧,从例子中看起来更直观.

我在当前目录中新建了一个文件夹叫A,一个文件叫abcd, 又在A这个文件夹下新建了另一个abcd的文件夹,下面是目录结构:

-----

希望可以帮到题主,欢迎追问.

❽ 在linux环境下有没有一个可以查看文件属性(只读啊,权限,大小什么的)的函数

用chmod,用法为
chmod 权限代码 文件名
权限代码主要为三位,每一位都遵循:
r = 4
w = 2
x = 1
- = 0
其中r为读,w为写,x为执行,若有多个属性,则相加。如6表示有读写权限,7表示有读写执行权限。
而三位的顺序是:所有者、组群、其他人
chmod 646 文件名
应该满足您的要求。

❾ 编写Linux C程序

先给你列出stu2主目录的文件信息这个功能的功能代码:
#include
<unistd.h>

#include
<dirent.h>

#include
<乱耐悄stdlib.h>

#include
<stdio.h>
void
read_dir()///==ls

{

char
buf[255];

buf=“你的stu2目录的
绝对路径
”;

DIR
*dirp;

struct
dirent
*direntp;

dirp
=
opendir(buf);

if(
dirp
!=
NULL
)

{

for(;;)

{

direntp
=
readdir(
dirp
);

if(
direntp
==
NULL
)
break;

if(DT_DIR
==
direntp->d_type)
printf(
"%s,%s",direntp->d_name,"
"
);

}

printf("\n");

closedir(
dirp
);

}

}
然后哗渣在你主函数亩山里面调用一下试试。

❿ struct dirent结构中d_type的用法

struct stat buf;
stat(file,buf);//file 为你需要读的文件 int型的参数
if(S_ISREG(buf.st_mode))
printf("普通文件");
另外就是你可悉汪氏以去找找struct stat这个结构体裏面的成员。其中st_mode成员为判断文件类型。下面是判断文件类型的一些宏。手打出来给你参考吧陵穗。睁散

S_ISREG() 为类型宏 普通文件
S_ISDIR() 目录文件
S_ISCHR() 字符特殊文件
S_ISBLK() 块特殊文件
S_ISFIFO() 管道或FIFO
S_ISLNK() 符号连接
S_ISSOCK() 套接字

阅读全文

与linuxdtype相关的资料

热点内容
镂空加密隔断墙效果图 浏览:539
windows7怎么安装证书服务器 浏览:952
证券业务的程序员 浏览:202
u点服务器wifi密码如何设置 浏览:864
宝马x5大灯编程 浏览:673
python安装和使用 浏览:381
加密的门禁卡复制了用不了 浏览:714
javacsv读写 浏览:806
ug编程教程pdf 浏览:763
latex编译软件安卓版 浏览:248
如何在信合app上交居民医保 浏览:109
丑恶pdf 浏览:365
陕西定频压缩机销售公司 浏览:795
安卓系统如何帮人打王者 浏览:427
sbtlinux安装 浏览:141
阿里云sip服务器 浏览:73
身为程序员的你怎么拼命 浏览:453
android图片手势放大 浏览:586
钱的所有算法 浏览:13
光模块服务器怎么直接连电脑 浏览:376