【发布时间】:2015-09-20 12:54:21
【问题描述】:
我正在尝试使用 chdir 来更改我的进程的工作目录。假设我的当前目录中有一个苹果目录。为什么当我在提示符中输入apple时返回的结果是-1?是不是因为当我输入apple时,'\n'字符也放在了字符串的末尾? 另外,如果我可以只使用一个变量来存储它,那么更改目录是什么意思?
#include<stdio.h>
#include<string.h>
#include<errno.h>
#include<unistd.h>
int main(void){
char path[256];
fgets(path, 256, stdin);
printf("%s", path);
int result = chdir(path);
if(result != 0){
printf("%d\n", result);
}
}
【问题讨论】:
-
对于
chdir(),请参见此处:man7.org/linux/man-pages/man2/chdir.2.html 或在您的控制台上输入man 2 chdir。 -
您对包含换行符的“路径”变量的正确看法。有几种方法可以消除换行符。我使用:
char *newline = strstr( path, "\n"); if (newline) { *newline = '\0';} -
注意:由于程序运行在一个单独的进程中,当程序退出时,当前工作目录将与程序运行前保持一致。