execvp

    0热度

    3回答

    我有一个任务是在C代码中创建一个shell,而且我有一个大多数时候都可以使用的解决方案。如果程序存在,我的解决方案就可以工作,并且我可以用Control-D或键入exit退出我的shell。但是当我尝试一个我知道不存在的命令时,我的shell会打印一条错误信息,说没有找到命令,但我必须输入exit或按Control-D与无效命令的次数相同输入即如果我输入错误的命令3次,然后我必须击中Control

    1热度

    1回答

    我想使该程序后忽略完成 “execvp(的argv [1],argv的+ 1);”如果第一个参数未定义,但getopt解析所有以“ - ”开头的参数。如何在第一个未定义的参数后忽略所有参数?这可能使用getopt?目前,我有一些代码: #include <unistd.h> #include <stdio.h> #include <stdlib.h> #include <getopt.h>

    0热度

    1回答

    它是c中的一些linux shell的实现。由于我已经添加了后台进程支持,我有一些输出,我不明白。下面是代码: #include <stdlib.h> #include <errno.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/types.

    1热度

    1回答

    我正在创建一个可以在终端上执行用户输入命令的shell。它也有历史功能。 现在一切工作正常。我被卡住的唯一部分是,如果用户输入“!!”最近的命令应该是EXECUTE,如果用户输入“!n”,第n个命令应该是EXECUTE。但是,当我运行它时,我输入这些命令时没有执行任何操作。 get_recent_command()和search_in_list_for_n()函数正在返回正确的命令,但是当我将这些

    0热度

    3回答

    所以我正在写一个程序,其中参数如下所示: program start emacs file.c 甚至 program wait 在本质上,第一个参数(argv [0])是程序名称,后跟用户输入。 在我的代码中,我调用了execvp。事情是,我不完全确定我在援引正确的论点。 if (pid == 0) { execvp(argv[1], argv); //Line of i

    1热度

    2回答

    使用fork和execvp函数从stdin行运行命令,制作一个简单类型的shell。 但是,像ls这样的工作,但不是ls -all -S。 它将执行ls,但什么都不会被打印ls -all 唯一的想法,我能想出的是,有一个“\ n”某处的命令,但我不知道怎么把它弄出来甚至它在哪里...... #include <stdio.h> #include <stdlib.h> #include <str

    2热度

    2回答

    我有下面的代码,用于产生和分离一个子进程,这只是另一个node.js脚本在同一个目录。下面是我运行的确切代码: var fs = require('fs'); var child = require('child_process'); var out = fs.openSync('/tmp/daemon.log', 'a'); var options = { cwd: proce

    0热度

    1回答

    execvp()连接标准输入,然后执行? 我不完全理解此命令 我的一个同学是让我看他的代码(即在终端执行一个shell)来计算整个事情出来, 但我不是很了解为什么将stdin更改为指向最后一个孩子的输出。我唯一能做的就是execvp必须将stdin连接起来,这样我们才能在前面的输出中使用管道命令。任何见解都会有帮助,谢谢。 #include <stdio.h> #include <string.

    2热度

    1回答

    我正在C中使用一个非常基本的UNIX shell。在此项目中,我试图使用fork()和execvp()来执行实际的shell命令。尽管我遇到了一个问题,它似乎对具有单个参数的命令(例如ls -l和echo howareyoutoday完美工作)的命令正常工作,但具有多个参数的命令无法执行(echo how are you today不运行)。我会通过我的代码/理由来帮助您找出造成这个问题的原因。

    0热度

    1回答

    我做了一个小程序,将行号放在文件的每一行前面!这工作得很好,但他们只是一个问题。我得到这个的结果是: 文本一个 文本的两种 文本3 但我想输出给我如: 1 Text one 2 Text two 3 Text three 我使用此代码来执行sed的功能: char* exec[] = { "sed", "/./=", NULL }; execvp(exec[0], exec); 我想