1

我的 C 程序中的 chdir() 有问题 - 仅在 Linux 上运行时(在 Mac 上运行良好)。我已经剥离了我的代码。

像这样的东西很好用:

chdir("/Documents");

但是当我尝试将它作为变量传递时,它不想工作。

char *home_directory;
home_directory = malloc(80);
chdir(home_directory);

主目录是从我代码中其他地方的文件中读取的,如果需要,我可以发布我是如何做到的。

谢谢。

4

3 回答 3

7

由于您正在home_directory从文件中读取,您是否忘记在将其用作参数之前删除尾随换行符和任何其他虚假字符chdir

于 2011-11-10T00:58:18.960 回答
2

尝试做一些错误检查,像这样;

char *home_directory;
home_directory = malloc(80);
/* ...fill the home directory... */
if (chdir(home_directory) == -1)
   perror("chdir");

..然后用man chdir哟可以查到错误码的意思。

于 2011-11-10T00:52:38.610 回答
1

由于chdir是 Linux 上的系统调用,因此您可以简单地使用该strace程序来查看您的程序真正做了什么。这并不能让你从代码中预先处理错误中解脱出来;明显地。它只是帮助您遵循程序采取的行动。

于 2011-11-10T01:03:17.383 回答