Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C(Linux)中向chdir()传递变量_C_Linux_Chdir - Fatal编程技术网

在C(Linux)中向chdir()传递变量

在C(Linux)中向chdir()传递变量,c,linux,chdir,C,Linux,Chdir,我的C程序中的chdir()有问题-只有在Linux上运行时(在Mac上运行良好)。我已经精简了我的代码 类似这样的方法很好: chdir("/Documents"); 但当我尝试将其作为变量传递时,它不想起作用 char *home_directory; home_directory = malloc(80); chdir(home_directory); 主目录是从代码中其他地方的文件读取的,如果需要,我可以发布我是如何做到这一点的 谢谢。试着做一些错误检查,像这样 char *home

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

类似这样的方法很好:

chdir("/Documents");
但当我尝试将其作为变量传递时,它不想起作用

char *home_directory;
home_directory = malloc(80);
chdir(home_directory);
主目录是从代码中其他地方的文件读取的,如果需要,我可以发布我是如何做到这一点的


谢谢。

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

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

。。然后用
manchdir
yo可以查找错误代码的含义。

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

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


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

因为您正在从文件中读取
home\u目录
,在将尾随换行符和任何其他伪字符用作
chdir
的参数之前,您是否忘记删除它?

因为您正在从文件中读取
主目录
,在将其用作
chdir
的参数之前,您是否忘记删除尾随换行符和任何其他伪字符?

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

由于
chdir
是Linux上的系统调用,您只需使用
strace
程序即可查看程序的实际功能。这并不能使您免于预先处理代码中的错误;明显地它只是帮助你遵循你的程序所采取的行动。

是“它不想工作”的最好证明,它可以向你的同行精确地表达你的技术想法?(1)张贴代码填充
主页目录
。(2) Linux上到底有什么失败?我希望您读取
malloc
chdir
之间的主目录?您确定79个字符足够路径吗?您应该检查
chdir()
返回的内容以及之后设置的
errno
(您的程序可能应该以这种方式处理错误)
peror()
将向您显示一条可读的错误消息。我假设您在调用
chdir()
之前已经检查了值
home\u目录
。可以肯定,作为参数传递的变量的内容是错误的。请尝试strcpy(主目录,/Documents)在上面代码中的chdir之前。是否“它不想工作”是您向同行精确表达技术想法能力的最佳证明?(1)张贴代码填充
主页目录
。(2) Linux上到底有什么失败?我希望您读取
malloc
chdir
之间的主目录?您确定79个字符足够路径吗?您应该检查
chdir()
返回的内容以及之后设置的
errno
(您的程序可能应该以这种方式处理错误)
peror()
将向您显示一条可读的错误消息。我假设您在调用
chdir()
之前已经检查了值
home\u目录
。可以肯定,作为参数传递的变量的内容是错误的。请尝试strcpy(主目录,/Documents)在上面代码中的chdir之前。我知道问题与此一样微不足道。非常感谢您的帮助,谢谢@用户1038788:那么如果这是正确的答案,为什么你不投票并将其标记为已接受?“投票需要15个声誉”。我现在已将其标记为已接受。我知道问题与此一样微不足道。非常感谢您的帮助,谢谢@用户1038788:那么如果这是正确的答案,为什么你不投票并将其标记为已接受?“投票需要15个声誉”。我现在已将其标记为已接受。
errno
几乎肯定会以
enoint
结束。
strace
建议可能会被证明更有用(除了在不需要重建的情况下给出
errno
之外;-)当然,不检查错误代码,然后再抱怨它不起作用是非常糟糕的做法。。。你很难期望人们在每次系统调用失败时都带着一个strace…几乎肯定
errno
最终会变成
enoint
strace
建议可能会被证明更有用(除了在不需要重建的情况下给出
errno
之外;-)当然,不检查错误代码,然后再抱怨它不起作用是非常糟糕的做法。。。你很难期望人们在每次系统调用失败时都带着strace。。。