c语言编写touch命令

时间:2021-06-21 09:15:11
本人最近想学习linux,想自己编一个touch命令,带参数的,希望各位高人帮忙谢谢,谢谢啦! 
邮箱是119362045@qq.com

9 个解决方案

#1


touch我只知道可以创建文件,好像还可以改变文件的啥属性,你可以用create+fcntl综合试试实现

#2


下个coreutils源码包,目录src/touch.c现成的。

#3


既然要自己编一个,那就要尽量自己解决咯。

#4


不要看源码,自己先考虑应该怎样实现,可以参考《UNIX高级环境编程》来选择使用哪些系统函数,然后不断的修改,调试

#5


解析命令行可以用getopt或者getopt_long。
strace命令可以跟踪程序调用了哪些API。
比如:strace touch -t 201201011010 newtest.c
自己写完了再和coreutils的对比一下,看看哪个更好。
另外,参考busybox里的实现也可以,busybox里的实现相对简单。

#6


各路神仙,帮帮忙吧!我自己是在是没什么思路

#7


各路神仙,帮帮忙啊!没思路啊!

#8


先确定要哪些功能,是完全和touch一样的支持他的所有参数 ,还是部分。
然后先写出解析参数的函数, 解析后怎么存放
再写最简单的创建文件的函数 .
然后在像APUE书或者网上查找下什么函数能修改文件的时间,再编写这个相应的功能。

#9


简单点说就是touch的实现功能是通过传入main的参数确定的
1. 解析传入的参数。
2. 对每种参数都写个相应的函数 (当然有的参数可以组合起来在一个函数中实现)
比如 -a 参数 是修改文件file的存取时间, 那么可以使用linux中的一个API , utime实现修改文件的最后访问时和修改时间来实现 ,, 具体的用man utime查询用法.. 
-c不创建文件,
-m修改文件
-t使用指定的时间值, 也可以用utime实现

等等 。
先从解析命令参数开始吧。

#1


touch我只知道可以创建文件,好像还可以改变文件的啥属性,你可以用create+fcntl综合试试实现

#2


下个coreutils源码包,目录src/touch.c现成的。

#3


既然要自己编一个,那就要尽量自己解决咯。

#4


不要看源码,自己先考虑应该怎样实现,可以参考《UNIX高级环境编程》来选择使用哪些系统函数,然后不断的修改,调试

#5


解析命令行可以用getopt或者getopt_long。
strace命令可以跟踪程序调用了哪些API。
比如:strace touch -t 201201011010 newtest.c
自己写完了再和coreutils的对比一下,看看哪个更好。
另外,参考busybox里的实现也可以,busybox里的实现相对简单。

#6


各路神仙,帮帮忙吧!我自己是在是没什么思路

#7


各路神仙,帮帮忙啊!没思路啊!

#8


先确定要哪些功能,是完全和touch一样的支持他的所有参数 ,还是部分。
然后先写出解析参数的函数, 解析后怎么存放
再写最简单的创建文件的函数 .
然后在像APUE书或者网上查找下什么函数能修改文件的时间,再编写这个相应的功能。

#9


简单点说就是touch的实现功能是通过传入main的参数确定的
1. 解析传入的参数。
2. 对每种参数都写个相应的函数 (当然有的参数可以组合起来在一个函数中实现)
比如 -a 参数 是修改文件file的存取时间, 那么可以使用linux中的一个API , utime实现修改文件的最后访问时和修改时间来实现 ,, 具体的用man utime查询用法.. 
-c不创建文件,
-m修改文件
-t使用指定的时间值, 也可以用utime实现

等等 。
先从解析命令参数开始吧。