execvp相关内容
我使用的是 ubuntu 12.04.我正在尝试“制作"一个项目. 我收到此错误: g++: 尝试执行 'cc1plus' 时出错: execvp: 没有这样的文件或目录 我已经安装了 g++. 解决方案 我尝试了@MonoThreaded 给出的命令,但它失败了.我在下面尝试过,它可以工作. sudo apt-get install g++ 请不要在 g++ 之后包
..
我正在编写一个小 shell 程序,它接受一个命令并执行它.如果用户输入了无效命令,则 if 语句返回 -1.如果命令是正确的,它就会执行命令,但是一旦它执行了命令,程序就会结束.我做错了什么是不执行它之后的代码行?我已经用 ls 和 cat 命令测试了 execvp(command.argv[0], command.argv),所以我很确定它可以工作.这是我的代码. int shell(ch
..
我想在我的 Linux C 程序中使用管道和 execvp 函数模拟 bash.例如 ls -l |wc -l 有我的程序: if(pipe(des_p) == -1) {perror("创建管道失败");}if(fork() == 0) {//第一次分叉关闭(1);//关闭标准输出重复(des_p [1]);//用管道写入替换标准输出关闭(des_p[0]);//关闭管道读取关闭(des_
..
我正在处理一个 Python 脚本,经过一些准备工作后,它会启动 ssh.我的脚本实际上是一个小的 CLI 工具.在类 Unix 系统上,在其生命周期结束时,Python 脚本将自身替换为 ssh 客户端,因此用户现在可以直接与 ssh 交互(即运行任意远程机器上的命令等): os.execvpe('ssh', ['ssh', '-o', 'foo', 'user@host'], os.envi
..
我目前正在测试一个执行 Linux 命令的程序 echo Hello |wc 使用管道. main() 中的父进程产生两个子进程,第一个执行 echo Hello,第二个执行 wc>.这两个进程通过管道进行通信. 但是,当我在两个子进程上调用 waitpid() 时,只有第二个进程退出.第一个进程成功运行execvp(),但挂在那里. 这是代码的假设输出: 命令 0命令 0 应
..
我的小shell程序接受管道命令,例如,ls -l |wc -l 并使用 excevp 来执行这些命令. 我的问题是,如果 execvp 没有 fork(),管道命令运行良好,但 shell 之后终止.如果execvp 有fork(),就会发生死循环.我无法修复它. 代码: void run_pipe(char **args){int ps[2];管道(ps);pid_t pid =
..
我对子进程的行为有疑问.此测试程序的目的是运行Linux命令 echo.wc 使用管道. 我的命令不起作用,结果是调用了错误的c字符串. 预期输出为: 命令 0回声命令1厕所 但是,我得到了: 命令0回声命令1你好 我只有在注释掉后才能获得预期的输出execvp(),不退出子进程时. 这是测试功能: int测试(pid_t id []){我int pipefd [
..
从字符串向量到char *向量到char **时,当参数以char **形式出现时,它正在工作,但是转换似乎有问题,我无法找到差异. 有更好的方法吗? vector args; /* code that correctly parses args from user input */ pid_t kidpid = fork(); if
..
我有一个字符串向量vector args,我需要将其转换为c字符串,然后再通过execvp调用作为参数运行.我不断收到错误“循环中的行从const char *到char *的无效转换.我不明白如何解决此问题,同时仍然导致可以馈给execvp的东西.虽然我看到过类似的文章,但我遇到的解决方案之一似乎可以解决我的问题. int argsLen = c->args.siz
..
试图理解为什么使用cat命令的这段代码不能在C语言中与execvp一起使用. char *in[5] ={"cat", "file1.txt", ">>", "file2.txt", 0}; execvp(in[0], in); 运行时,它显示file1.txt的内容,但随后显示: cat:>>没有此类文件或目录. 然后显示file2.txt的内容 为什么在这种情况下它不能识
..
我正在尝试使用fork和execvp执行文件,但是遇到一些错误.我没有找到解决此在线问题的任何解决方案,因为我没有从exevp中得到任何错误,也没有运行它.这是我的代码: pid_t child; int status; child = fork(); char *arg[3] = {"test","/home/ameya/Documents/computer_sc
..
我在保存execvp输出时遇到问题.我想将(ps -eo pid,fname,state,ppid,gid,sid)的输出保存在txt文件中. 这是我的代码: #include int main(void) { char* args[]={"ps","-eo","pid,fname,state,ppid,gid,sid" , ">" , "t.tx
..
可能重复: 编写外壳程序-如何执行命令 我的任务是用C编写外壳程序.到目前为止,我了解execvp会尝试以arg2作为参数在arg1中运行程序.现在看来,这样做 execvp ("ls", args); //assume args is {"ls", ">", "awd.txt"} 并不等同于在控制台中输入 ls > awd.txt 我意识到我需要使用freopen来获
..
我有以下代码旨在产生和分离子进程,这只是同一目录中的另一个node.js脚本.这是我正在运行的确切代码: var fs = require('fs'); var child = require('child_process'); var out = fs.openSync('/tmp/daemon.log', 'a'); var options = { cwd: process.c
..
我有一段像这样的代码作为子线程运行: if(someVar == 1){ doSomeStuff; _exit(0) } else execvp(*(temp->_arguments), temp->_arguments); printf("I'm done\n"); 当我使用someVar == 1运行程序时,我知道_exit(0)调用会杀死我的线程.但是,将其设置为0时,为什
..
现在,我正在编写一个必须执行子进程的C程序.我不会同时执行多个子进程或执行任何操作,因此这非常简单.我肯定可以成功执行内置的shell程序(即cat和echo之类的东西),但是我还需要能够分辨出其中一个程序何时无法成功执行.我正在尝试使用以下简化代码: int returnStatus; // The return status of the child process. pid_t pid
..
我有以下代码. 我的问题在代码中 int main() { .... if ((uproc.pid = fork()) == -1) { return -1; } if (uproc.pid == 0) { /* child */
..
用户将读取一行,并且我将保留第一个单词作为execvp的命令. 让我们说他将键入 "cat file.txt" .命令将是cat.但是我不确定如何使用此execvp(),我阅读了一些教程,但仍然没有得到它. #include #include int main() { char *buf; char command[32];
..
我正在编写一个程序,该程序将接收命令名称和参数,并可选地在末尾接收字符串"bg",如果传递了"bg"字符串,则我的程序应在后台使用命令的参数来执行命令(如果不在前台) ,这是我的代码: #include #include #include #include #include
..
我有一个派生许多子进程的服务器进程.服务器进程与CPU核心具有关联性,但我不希望该关联性由子进程继承(而是OS应该处理在何处运行这些进程).有没有办法针对cpu亲和力取消父子进程的链接? 解决方案 您可以致电 fork(2) 以及
..