漫游云巅 发表于 2012-12-17 21:28

有关chdir和fchdir的问题请教[已解决]

本帖最后由 crazyhadoop 于 2012-12-18 17:09 编辑

chdir("/home")可以改变目录,但是我想“/home”直接在键盘上输入,该如何处理。
目前找的2个方法:
1、用chdir:
int main()
    {char p;
    scanf("%s",&p);
    chdir(&p)
    }
可以实现改变,但我不了解为什么chdir(&p)能生效,我改成chdir(p)就不行呢?
2、用fchdir。这个可以从文件描述符输入。
但是为什么不支持STDIN_FILENO,也就是fchdir(0),为什么不能实现从键盘输入呢?

退而求其次,我不从键盘输入,建立一个文件名1.txt,内容是/home,然后
    {int m;
    m=open("1.txt",O_RDONLY);   //m=open("/home",O_RDONLY);可以实现,但为什么前面不行?
    fchdir(m);
    }
为什么也不能改变目录呢。

希望高手能帮忙解答下。谢谢了。

crazyhadoop 发表于 2012-12-17 23:47

你那个且只有一个字节,能存什么?
m 内容是文件描述符,又不是/home

漫游云巅 发表于 2012-12-18 11:37

谢谢版主。自己又看了下
1、chdir格式是int chdir(const char *path),只能输入此类型
2、文件描述符理解不对,只是记录打开的文件,不能记录其内容。
但是我这样编写,为什么还是不对呢?
#include <unistd.h>
#include <stdio.h>
int main()
{
    char buf;
    char bz;
    read(0,bz,sizeof(bz));
    chdir(bz);
    printf("current working directory : %s\n", getcwd(buf, sizeof(buf)));
}
这样就能键盘输入了,但是结果仍然不对啊,我输入/home,但仍然输出当前目录。

crazyhadoop 发表于 2012-12-18 12:16

bz这个参数传的不对吧?

bz = '\0';
chdir(bz);

再试试

漫游云巅 发表于 2012-12-18 12:47

谢谢版主,明白了.
页: [1]
查看完整版本: 有关chdir和fchdir的问题请教[已解决]