c - 制作我自己的 shell - C - chdir()

标签 c linux shell chdir

我尝试用 C 语言编写自己的 shell。我在 chdir() 函数方面遇到问题。 有时我会收到一条错误消息,显示 execvp: No such file or Directory ,而其他一些则没有。该目录始终相同。我正在努力到达一个存在的目的地。

if(strcmp(str,"exit\n")!=0){

    history_vector[i]=strdup(str);

    if(strcmp(str,"cd\n")==0){
        char *dir  = strtok(str," ");
        dir = strtok(NULL," ");
        if(chdir(dir) == -1) {
            perror("Cannot change directory"); 
        }   
        else {
            printf("Changing Directory .....\n"); 
        }
   }

最佳答案

如果您期望存在参数,则字符串比较将永远不会成功。

strcmp() 一起使用的字符串 "cd\n" 不包含参数,因此如果 则不会匹配str 更长。

关于c - 制作我自己的 shell - C - chdir(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27942176/

相关文章:

使用单个相机计算距离

linux - 为 u-boot 创建 boot.scr

linux - 为什么UDP数据包是从默认接口(interface)地址发送的,而不是从接收客户端数据包的地址发送的?

c - 如何在 C 语言的 gtk3 程序中增加按钮或标签的字体大小?

linux - 如何剪切部分 grep 值

c - 我们如何将文本文件从客户端发送到服务器?

c - 在文件描述符上使用 fwrite/将文件描述符转换为文件指针

c - 基于链表的动态数组上的 realloc 函数的问题

linux - 我的环境变量对系统上的其他用户安全吗?

linux - 比较文件系统空间使用情况随时间的变化