如何使用chdir系统功能

时间:2015-09-20 12:54:21

标签: c fgets cd chdir

我正在尝试使用chdir来更改进程的工作目录。假设我当前目录中有一个苹果目录。为什么当我在提示符中输入apple时返回的结果为-1?是因为当我进入苹果时,' \ 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);
    }
}

1 个答案:

答案 0 :(得分:4)

fgets() 后缀的结果可能(如果没有收到EOF)读取新行(IXish系统上的\n)并传递给它到chdir()使得后者的阻塞作为目录名改变为大多数,并不带有尾随的新行。

来自man fgets() italics by me ):

  

fgets()从流中读取最多一个小于大小的字符,并将它们存储到s指向的缓冲区中。读数在EOF或换行符后停止。 如果读取换行符,则将其存储到缓冲区中。

关于调试的说明:如果您要输入&#34;字符串&#34;打印(由fgets()读取)在这样的引号中

printf("'%s'", path);

您可能已经注意到尾随\n