在C(Linux)中将变量传递给chdir()

时间:2011-11-10 00:45:55

标签: c linux chdir

我的C程序中有chdir()问题 - 只有在Linux上运行时(在Mac上运行正常)。我已经删除了我的代码。

这样的事情很好:

chdir("/Documents");

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

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

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

感谢。

3 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:2)

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

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

..然后使用man chdir哟可以查找错误代码的含义。

答案 2 :(得分:1)

由于chdir是Linux上的系统调用,因此您只需使用strace程序即可查看您的程序实际执行的操作。这并不能让您免于在代码中处理错误;明显。它只是帮助您跟踪您的程序所采取的操作。