为何使用了chdir函数之后,使用getcwd函数获取当前目录似乎是我欲改变的目录,但使用PWD查看当前工作目录并没有改变呢?代码如下:
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h> //?
#include<unistd.h>
#include<stdio.h>
#define SIZE 30
int main()
char newpath[SIZE];
char buf[SIZE];
/*get the path of present at first*/
if(getcwd(buf,SIZE)==NULL)
printf("error ,getcwd failed!\n");
return -1;
printf("cwd = %s\n",buf);
/*input the path that you want change to */
printf("Input the new pathname[<30 strings]:\n");
gets(newpath);
if(chdir(newpath) == -1)//change to the directory you want
printf("error,change directory failed!\n");
return -1;
printf("ok,change directory successful!\n");
if(getcwd(buf,SIZE)==NULL)
printf("error ,getcwd failed!\n");
return -1;
printf("cwd = %s\n",buf);
return 0;
}求解中,谢谢
------解决方案--------------------
说明:chdir函数用于改变当前工作目录。调用参数是指向目录的指针,调用进程需要有搜索整个目录的权限。每个进程都具有一个当前工作目录。在解析相对目录引用时,该目录是搜索路径的开始之处。如果调用进程更改了目录,则它只对该进程有效,而不能影响调用它的那个进程。在退出程序时,shell还会返回开始时的那个工作目录。
chdir问题为何使用了chdir函数之后,使用getcwd函数获取当前目录似乎是我欲改变的目录,但使用PWD查看当前工作目录并没有改变呢?代码如下:#include#include#include //?#include#include#define SIZE 30int main(){ char newpath[SIZE]; ch
1、在实际应用中,代码需要从当前目录进到其它目录,完成操作,然后再回到当前目录。这个时候需要getcwd获取当前目录路径,保存起来,在使用
chdir
跳转到其它目录,然后再使用
chdir
和保存的路径回到最初的目录。
2、man
chdir
3、int
chdir
(const char *path);
-参数*path;文件路径
-返回值;成功返回0,错误返回-1
swoole version: 1.9.6
其实跟swoole的版本无关,因为原代码体系,fpm模式下,在启动的时候,是使用
chdir
函数改变了当前目录的,而其它代码在做类的自动加载的时候,都是写的相对地址,而不是绝对地址。
问题就来了,swoole是多进程的,在daemonize模式下,
chdir
改变当前目录,在其它进程下是不生效的,所以有时候,不使用daemonize没问题,而使用daem...
出现此错误的原因在于 如果用户通过回车键或通过EOF (Linux上的ctrl + d)字符输入字符串,这将会运行。
所以在调用strtok()函数时,应该写strtok(....," \n"),以防字符串以EOF或其它形式结束。
1、在涉及到获取用户输入时要注意换行符的处理,"\n"也输入一个字符,应该考虑到。
2、在涉及到数组的处理时要注意结束符 "\0",它是自动补充的,会起到
作用
,特别是涉及到数组的空间开辟以及访问时应该被注意。