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

发布于 2024-12-14 11:39:33 字数 334 浏览 0 评论 0原文

我的 C 程序中的 chdir() 遇到问题 - 仅当在 Linux 上运行时(在 Mac 上工作正常)。我已经剥离了我的代码。

像这样的东西工作得很好:

chdir("/Documents");

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

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

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

谢谢。

I'm having a problem with chdir() in my C program - only when running on Linux (works fine on Mac). I've stripped down my code.

Something like this works fine:

chdir("/Documents");

but when I try to pass it as a variable it doesn't want to work.

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

Home directory is read from a file elsewhere in my code, I can post how I've done that if needed.

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

九八野马 2024-12-21 11:39:33

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

Since you are reading home_directory from a file, have you forgotten to remove a trailing newline and any other spurious characters before you use it as a parameter to chdir?

分开我的手 2024-12-21 11:39:33

尝试进行一些错误检查,如下所示;

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

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

Try doing some error checking, like this;

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

.. and then with a man chdir yo can look up the meaning of the error code.

过潦 2024-12-21 11:39:33

由于chdir是Linux上的系统调用,因此您可以简单地使用strace程序来查看您的程序到底做了什么。这并不能让您免于在代码中预先处理错误;明显地。它只是帮助您遵循程序所采取的操作。

Since chdir is a system call on Linux, you can simply use the strace program to see what your program really does. That doesn't free you from handling errors preoperly in your code; obviously. It just helps you to follow the actions that your program takes.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文