首页 > 系统相关 >Linux-unbuntu目录操作

Linux-unbuntu目录操作

时间:2024-01-26 21:32:14浏览次数:30  
标签:头文件 -- char unbuntu tm Linux include 目录

1.打开目录

2.读取目录内容

3.关闭目录

4.mkdir -- 创建目录

5.rmdir --删除目录(只能删除空文件夹)

6.getcwd -- 获取当前工作的绝对路径

7.chdir -- 改变当前的工作路径

8.chmod -- 功能 - 更改权限

打开目录:opendir

头文件:

#include<sys/types.h>
#include<sirent.h>

DIR *opendir(const char *name);

形参:name:要打开的目录的路径/名字

返回值:成功DIR *类型的目录流指针失败:返回NULL

关闭目录  closedir

头文件:

#include <sys/types.h>
#include <dirent.h>

int closedir(DIR *dirp);

形参:opendir的返回值

返回值:returns 0 on success.On error, -1 is returned

readdir -- 读取目录信息

头文件:

#include <dirent.h>

struct dirent *readdir(DIR *dirp);

形参:dirp:opendir打开获取到的目录流指针

mkdir -- 创建目录

头文件:

<sys/stat.h> <sys/types.h>

函数原型iint mkdir(const char *pathname, mode_t mode);

参数

          pathname:文件路径/文件名

          mode:直接使用数字即可(权限)    

实际权限:mode &(~umask)

     返回值

          成功返回0,错误返回-1

rmdir --删除目录(只能删除空文件夹)

头文件:

#include<unistd.h>

参数:要删除目录路径,你也可以直接写argv[1]

     返回值

          成功返回0,错误返回-1

getcwd -- 获取当前工作的绝对路径

头文件:

#include<unistd.h>

功能:获取当前目录

     函数原型:char *getcwd(char *buf, size_t size);返回值

          成功返回指向当前目录的指针,和部分值一样,错误返回NULL

chdir -- 改变当前的工作路径

头文件:

#include<unistd.h>

函数原型

          int chdir(const char *path);

     所属头文件:          <unistd.h>

     参数

          path:文件路径

     返回值

          成功返回0,失败返回-1

chmod -- 功能 - 更改权限

头文件:

#include <sys/types.h>
 #include <sys/stat.h>

参数

          path :文件路径

          mode 权限

     返回值

          成功返回0失败-1

例题一:实现ls -i的功能(加一个文件类型)

#include <stdio.h>
#include <dirent.h>
#include <sys/types.h>
#include <string.h>
#include<unistd.h>
char Fun(char c);
int main(int argc,char *argv[1])
{
    char path[1024]={0};
    if(argc<2)
    {
        strcpy(path,".");
    }
    else
    {
        strcpy(path,argv[1]);
    }
    DIR*dir=opendir(path);
    if(dir==NULL)//打开失败
    {
        perror("opendir");
        return -1;
    }
    struct dirent *p;
    while(p=readdir(dir))//一次只能读取一个文件信息
    {
        if(p->d_name[0]=='.')
        continue;//pass掉隐藏文件
        printf("%ld %s %c",p->d_ino,p->d_name,Fun(p->d_type));
    }
    return 0;
}
 char Fun(char c)
    {
        char d=0;
        switch(c)
        {
            case DT_REG:d='-';break;
        }
        return d;
    }

例题二:获取某一文件夹下的所有.c文件

#include <stdio.h>
#include <dirent.h>
#include <sys/types.h>
#include <string.h>
#include<unistd.h>
int main(int argc ,char *argv[])
{
	char path[1024]={0};
	if(argc<2)//当前路径
	{
		strcpy(path,".");
	}
	else
	{
		strcpy(path,argv[1]);//查看其他路径内的.c文件
	}
   	DIR*dir=opendir(path);
	   struct dirent*p;
	   while(p=readdir(dir))
	   {
		   int n=strlen(p->d_name);
		   if((strcmp(p->d_name+n-2,".c"))==0)
		   printf("%s ",p->d_name);
	   }
   	return 0;
}
 

例题三:时间编程,做练习,localtime

#include<stdio.h>
#include<time.h>
int main()
{
    	time_t t=time(NULL);
   	// struct tm*p=localtime(&t); 
   	struct tm *p=localtime(&t);
    	printf("%d %d %d %d %d %d\n",p->tm_year+1900,p->tm_mon+1,p->tm_mday,p->tm_hour,p->tm_min,p->tm_sec);
    	//printf("%ld\n",t);
    return 0;
}

标签:头文件,--,char,unbuntu,tm,Linux,include,目录
From: https://blog.51cto.com/u_16425777/9438414

相关文章

  • linux 安装 elasticsearch
    安装Elasticsearch在Linux系统上的步骤如下:首先,确保你的系统已经安装了Java,Elasticsearch是基于Java开发的,所以需要先安装Java运行环境。可以使用以下命令来检查Java是否已经安装:java-version如果Java已经安装,将会显示Java版本信息。如果没有安装,请根据你的系统......
  • Archlinux pacman 滚挂的惨痛教训
    本文以BY-NC-SA协议发布。省流不要将/var/cache/pacman/pkg及它的任一父目录设为符号链接。完整版我真傻,真的。我是单知道/var/cache会占很大空间导致滚挂,不知道/var/cache不能设为符号链接。在上次滚挂后我设置了符号链接,然后一个月不到就又挂了,救不回来的那种。翻......
  • golang 遍历目录的两种方式、删除目录的两种方式
    funcmain(){ directory:="/Users/mike/Downloads" //不会递归只会读取当前的单层目录 directories,err:=os.ReadDir(directory) iferr!=nil{ fmt.Println(err) } for_,d:=rangedirectories{ fmt.Println(d.Name(),d.IsDir()) } //会递归遍历所......
  • Linux进程间通信_管道
    进程间通信概述在开发过程中,有时会需要进程间进行一些交流和互动,比如一个进程向另一个进程发送数据、发送命令、发送通知或进行某种协同,进程之间的这些行为,其实是在进行进程间通信。进程间通信,即是让多个进程之间可以实现数据层面的交互。由于进程的独立性,进程间通信的成本并不低。......
  • 一生一芯-Linux环境搭建
    1.gdb调试1.gdb-qFilename进入gdb调试器2.(gdb)b3 在第三行添加断点 breakpoint3.(gdb)run 执行程序4.(gdb)whatisiNum 查看iNum的数据类型5.(gdb)c 继续执行程序(直到下一个断点或者之后没有断点就运行完整个程序)6.(gdb) n 一步一步执行程序7.(gdb)piNu......
  • linux 查看内存
    linux查看内存多大的方法:1、执行“free-m”命令,输出列表的“total”项值就是查询的总内存数;2、执行“cat/proc/meminfo”命令,可显示内存的详细信息,输出列表的“MemTotal”项值就是查询的总内存大小。linux查看内存多大的方法1.free-h,显示内存单位 2、执行free-mfr......
  • Linux man命令
    在Linux系统中,man是一个命令,用于调用系统的手册页(ManualPages)以获取命令、函数、文件或概念的详细信息和用法。手册页是一种文档形式,提供了有关Linux系统中各种命令、工具、库函数、文件格式等的详细说明。它们按照特定的章节组织,并分配了不同的编号。要使用man命令来查......
  • Blazor Hybrid应用将非wwwroot目录下的文件加入静态资源
    以Winfrom为例,创建一个Class继承BlazorWebView这个类,重写CreateFileProvider这个方法就行。保存后,用新控件替换原来的控件,WPF,MAUI同理,但是MAUI只有Windows平台能用下面的代码。其他平台会报错,找不到文件。publicclassCustomBlazorWebView:BlazorWebView{......
  • Linux 环境下为VirtualBox安装增强功能
    VirtualBox安装CentOS后,再安装增强功能就可以共享文件夹、粘贴板以及鼠标无缝移动,主要步骤如下:1、yum-yupdate2、yum-yinstallg++gccgcc-c++makekernel-*#主要是在安装增强工具提示没有安装这些软件3、yum-yinstallbzip2*......
  • linux服务器,启动服务jar包后,tail查看日志会卡主几分钟后,日志才加载出来,且访问接口很容
    首先:先排除服务器资源不足问题,看程序启动分配内存是否充足等问题原因:DNS配置异常导致的问题,程序运行时会去跑这些域名解析解决方法:/etc/resolv.conf中namespace配置注释,配置注释后,不用运行其他命令,会立即生效,重启服务,可以看到日志会立即返回,且调接口会快速返回,不容易超时......