通过一个小项目学习一下C语言文件IO操作。基于linux平台开发,win平台没有lstat()这个函数,因此ls功能不能实现。
源码gitee地址:
- 实现一个基础的 shell 程序,主要完成三个命令的功能 cp、ls和tree
- cp 命令主要实现:
- 文件复制
- 目录复制
- ls 命令主要实现:
- ls -l 命令的功能
- tree命令实现
- cp 命令主要实现:
使用makefile或cmake管理工程。
最终实现效果:
先把基本的管理工程文件写出来。
如果用Makefile管理工程,
OBJS := main.o cmd_ls.o cmd_cp.o cmd_handle.o # 所有依赖目标文件
TARGET := tinyshell # 目标文件
$(TARGET): $(OBJS)
@gcc $^ -o $@ # $^ : 依赖的所有文件 $@ : 目标文件
@echo "Done."
%.o:%.c # 自动推导
@gcc -c $< -o $@ # $< :依赖的第一个文件 $@ : 目标文件
clean: # 清除目标
rm -rf *.o $(TARGET) # 删除相关依赖文件
如果用cmake管理工程,CMakeList.txt
cmake_minimum_required(VERSION 3.25)
project(tiny_shell C)
set(CMAKE_C_STANDARD 11)
# 添加源文件
file(GLOB SOURCES "*.c")
# 添加头文件
file(GLOB HEADERS "*.h")
# 将源文件添加到可执行目标
add_executable(YourExecutable ${SOURCES} ${HEADERS})