[低调的问一声]cd是怎么实现的?

_Wanghui_ 2006-06-20 07:41:16
如题,是本学期操作系统的课程设计,一个10个命令,用windows api实现
还剩一个cd,无从下手,找不到相关资料
忘高手给个提示
...全文
545 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
cppprogramlover 2006-06-21
  • 打赏
  • 举报
回复
文件都有类型的.各个系统有点差别,但是都类似,肯定能判断出来.

shell得到cd其实就做一次chdir
tom955 2006-06-21
  • 打赏
  • 举报
回复
使用字符串验证一下,有扩展名的就是文件,没有的就是路径。
_Wanghui_ 2006-06-21
  • 打赏
  • 举报
回复
不一定吧,说不定有个目录就叫做a.txt
_Wanghui_ 2006-06-20
  • 打赏
  • 举报
回复
知道了,考虑考虑再说吧
...
Wolf0403信誉好高啊
Wolf0403 2006-06-20
  • 打赏
  • 举报
回复
甭吵了。一个进程中设置自己的当前路径自然是不会影响到父进程的,所以需要提供一种方法,至少让你的 10 个命令能够协作。将 cd 整合在一个 shell 中作为内部命令是正统解法。非正统处理方法包括:

将当前目录写入一个文件;其它程序运行时,读取这个文件,设置自己的当前目录;
同上,改用注册表;
cd 命令修改完当前路径后再次执行一个 shell 进程;
……

以上非正统处理方式请一笑而过。
_Wanghui_ 2006-06-20
  • 打赏
  • 举报
回复
你这是在夸呢,还是在什么
teacher1998 2006-06-20
  • 打赏
  • 举报
回复
看来你们老师还是有水平啊!!
_Wanghui_ 2006-06-20
  • 打赏
  • 举报
回复
因为要验收,得给老师看的
lexchou 2006-06-20
  • 打赏
  • 举报
回复
如果你自己做一个有那10个命令的shell,你就很容易处理这个问题了
_Wanghui_ 2006-06-20
  • 打赏
  • 举报
回复
楼上强人,那我该如何实现cd,有办法没
lexchou 2006-06-20
  • 打赏
  • 举报
回复
cd是cmd的内部命令,不是外部命令,对整个cmd环境有效

而当前目录是进程相关的,对子进程有效,所以在cmd中cd了其他目录后在其他进程内有效。而你的程序改变当前目录不会对父进程cmd有效。所以你这个看起来似乎有错,实际上没有问题。子进程不影响父进程的当前目录的
_Wanghui_ 2006-06-20
  • 打赏
  • 举报
回复
楼上的代码我看看再说,这个是我刚写的cd,但是不对,哪里有错?
int main( int argc, char *argv[] ) {
char DirSpec[MAX_PATH];

if( argc > 2 ) {
Usage();
exit(0);
}
GetCurrentDirectory( 1024, DirSpec );
strcat( DirSpec, "\\" );
strcat( DirSpec, argv[1] );
SetCurrentDirectory( (LPTSTR)DirSpec );
printf("%u", GetLastError() );
}
lexchou 2006-06-20
  • 打赏
  • 举报
回复
if((GetFileAttributes(_T("C:\\")) & FILE_ATTRIBUTE_DIRECTORY) && GetLastError()==0)
MessageBox(NULL,_T("YES"),NULL,NULL);
else
MessageBox(NULL,_T("NO"),NULL,NULL);
_Wanghui_ 2006-06-20
  • 打赏
  • 举报
回复
都是操作windows下的文件和目录
没复杂的东西
lbaby 2006-06-20
  • 打赏
  • 举报
回复
这要看你的文件系统是怎么样组织的
_Wanghui_ 2006-06-20
  • 打赏
  • 举报
回复
还有,给一个文件或目录的名字,如何判断它是文件还是目录
我是用CreateFile打开它
先设置第6个参数DWORD dwFlagsAndAttributes, // file attributes
为FILE_ATTRIBUTE_NORMAL,做判断
然后再改为FILE_ATTRIBUTE_HIDDEN判断是否为目录
请问正确的方法应该是什么
lexchou 2006-06-20
  • 打赏
  • 举报
回复
SetCurrentDirectory
GetCurrentDirectory

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧