[郁闷]chdir,你是咋了?
时间:2010-08-04
来源:互联网
- #include <unistd.h>
- #include <stdio.h>
- #include <stdlib.h>
-
- int main(int argc, char *argv[])
- {
- if (argc > 2)
- {
- printf("输入错误!\n");
- return 0;
- }
-
- if (argc == 1)
- {
- FILE *fp;
- char buffer[128];
- fp = popen("echo $HOME", "r");
- fgets(buffer,sizeof(buffer),fp);
- printf("%s", buffer);
- chdir(buffer);
- pclose(fp);
- }
-
- if (argc == 2)
- {
- chdir(argv[1]);
- }
- return 0;
- }
作者: allmycheers 发布时间: 2010-08-04
作者: davelv 发布时间: 2010-08-04
davelv 发表于 2010-08-04 15:15
怎么修改成真正的cd命令?
作者: allmycheers 发布时间: 2010-08-04
作者: haolth 发布时间: 2010-08-04
haolth 发表于 2010-08-04 15:18
我没有创建子进程阿。 以在上面句后面pwd,是什么意思?是在chdir(argv[1]);前面加上getcwd吗
作者: allmycheers 发布时间: 2010-08-04
他说你的程序运行后就是shell的子进程,子进程修改了工作目录后不会影响父进程。
pwd是linux下的一个命令,用来显示当前工作目录的。
cd那个是shell内置的命令,不是单独的二进制程序。shell相当于解释器,解释了cd的含义,不是父子进程的关系。
作者: davelv 发布时间: 2010-08-04
作者: allmycheers 发布时间: 2010-08-04
这样,就回新建一个bash进程,作为你当前进程的子进程,子进程继承了父进程的工作目录,所以你就chdir就生效了。
不过这个bash是新建的,不是原先的shell,要exit命令后才能回到原先的shell,而且工作目录没有受到你新进程的影响。
作者: davelv 发布时间: 2010-08-04
他说你的程序运行后就是shell的子进程,子进程修改了工作目录后不会影响父进程。
pwd ...
davelv 发表于 2010-08-04 15:39
本来是这么回事。但是我发现一件比较疯狂的事
- $ ls /usr/bin | grep cd
- cd
- distccd
- $ /usr/bin/cd -h
- /usr/bin/cd: line 4: cd: -h: invalid option
- cd: usage: cd [-L|-P] [dir]

作者: beyond_touch 发布时间: 2010-08-04
beyond_touch 发表于 2010-08-04 16:31
我系统下没有这个文件,Fedora Linux 2.6.32
你什么系统?
作者: davelv 发布时间: 2010-08-04
OSX 10.6.4
作者: beyond_touch 发布时间: 2010-08-04
难道不是吗..

作者: pandaiam 发布时间: 2010-08-04
正常情况下,cd是shell内置命令
作者: beyond_touch 发布时间: 2010-08-04
OSX 10.6.4
beyond_touch 发表于 2010-08-04 16:40
我一直以为用MAC的人都不屑于使用控制台,以至于我后来都觉得苹果可以把terminal去掉了。。。
你用的什么版本的shell?
作者: davelv 发布时间: 2010-08-04
有啥区分的方法没..

作者: pandaiam 发布时间: 2010-08-04
GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin10.0)
作者: beyond_touch 发布时间: 2010-08-04
- $ info bash
作者: beyond_touch 发布时间: 2010-08-04
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28