免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1540 | 回复: 4
打印 上一主题 下一主题

[Linux] 有关chdir和fchdir的问题请教[已解决] [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-12-17 21:28 |只看该作者 |倒序浏览
本帖最后由 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);
    }
为什么也不能改变目录呢。

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

论坛徽章:
1
天蝎座
日期:2013-12-06 18:23:58
2 [报告]
发表于 2012-12-17 23:47 |只看该作者
你那个且只有一个字节,能存什么?
m 内容是文件描述符,又不是/home

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

论坛徽章:
1
天蝎座
日期:2013-12-06 18:23:58
4 [报告]
发表于 2012-12-18 12:16 |只看该作者
bz这个参数传的不对吧?

bz[strlen(bz)-1] = '\0';
chdir(bz);

再试试

论坛徽章:
0
5 [报告]
发表于 2012-12-18 12:47 |只看该作者
谢谢版主,明白了.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP