execvp

    0热度

    1回答

    试图了解为什么使用cat命令的这部分代码是不是在C. char *in[5] ={"cat", "file1.txt", ">>", "file2.txt", 0}; execvp(in[0], in); 与execvp工作当我运行它显示FILE1.TXT的内容,但接着说: cat:>>没有这样的文件或目录。 然后显示file2.txt的内容 为什么在这种情况下它不能识别>>操作符?

    1热度

    1回答

    我试图在我正在创建的bash shell中实现||,&&和;运算符。我试图做的是使用int作为标志,如果成功则设置为1,否则设置为0。我的问题是,即使我进入一个无效的操作,比如ls -apples它设置标志为1。我也得到了错误信息 LS:无效选项 - “E” 尝试“LS --help”欲了解更多信息 所以我认为这意味着它在技术上是执行? 如何跟踪execvp是否进行了无效操作? 这里是我的代码:

    1热度

    1回答

    我想做一个小壳。我的问题是,当我拨打execvp()时 - 我收到错误。 例如,当我输入ls -l时,它返回ls: invalid option -- ' 有人能帮我理解为什么我得到这个错误吗?对于我的代码,函数命令split获取用户输入,并将它们分解为单独的命令。单独的命令由;字符分隔。 #include <stdio.h> #include <stdlib.h> #include <str

    -1热度

    2回答

    我试图使用fork与execvp同时运行两个shell命令。我有两个问题,当我输入mkdir folder1&mkdir folder2时,它会创建一个名为folder1的文件夹和另一个名为folder2?(该问号包含在文件夹名称中)的文件夹。另一个问题是执行这两个命令后代码退出。 下面是代码: #include <stdio.h> #include <stdlib.h> #include <

    1热度

    1回答

    假设我有一个子进程,其调度策略使用C库的函数sched_setscheduler设置为SCHED_BATCH,现在这个子进程使用这个子进程创建一个外部进程execvp系统调用。 创建的新进程的调度程序是否与前一个子进程的调度程序相同,即是否通过execvp系统调用继承了调度策略?我已阅读手册页,其中指出FIFO和RR政策是继承的,但对于正常的政策,像SCHED_BATCH,SCHED_IDLE和S

    0热度

    1回答

    我试图编写一个程序C创建2个子进程,其中每个进程执行execvp。 我的问题是,第一个孩子写太多的输入到另一个孩子读的管道。 int main(int argc, char* argv[]){ //unnamed pipe int pipeFd[2], statusFirst,statusSecond; pid_t childPidOne,childPidTwo; if(pipe(pi

    2热度

    2回答

    我想更改文件描述符,以便将我的execvp命令发送到文件。之后,我想将stdout重置回控制台。 这是我到目前为止有: int main() { printf("to console\n"); int stdoutfd = dup(STDOUT_FILENO); FILE* file = fopen("./test.txt","ab+"); int file

    0热度

    1回答

    只是为了阐述标题,我变得很perodic,随机坏地址时execvp()被调用。 我可以重复使用纳米,CD,每过一段时间我会用一个错误的地址被命中。 我使用一个字符串矢量,换弦的载体,一个const char **,并在最后追加空。看起来好像null并不总是被读取。 任何帮助表示赞赏。 代码以供参考: int parse::sh_execute() { const char **arg

    0热度

    2回答

    我想做一个shell“bosh>”,它需要在Unix命令并不断收到错误的地址错误。我知道我的代码读取命令并解析它们,但出于某种原因,我无法让它们执行,而是出现“错误地址”错误。 #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/wait.h> #include <sys/types.h> #i

    1热度

    1回答

    我试图做一个shell,只要它不能执行命令它说“执行二进制错误:-nameOfBinary-”。但问题是,它总是给我“没有这样的文件或目录”的消息。我的代码 继承人部分: void handle_SIGINT() { write(STDOUT_FILENO,line,strlen(line)); printf("\n"); struct sigaction handl