Tag: 执行

使用execvp()运行’wc’识别/home/usr/foo.txt但不识别〜/ foo.txt

我有一个程序,我想使用execvp()运行命令wc 。 重要的部分在这里: char *argvNew[5]; argvNew[0] = “wc”; argvNew[1] = “/home/user/foo.txt”; argvNew[2] = NULL; execvp(argvNew[0], arvgNew); 这很好用,终端显示wc的输出。 但是,当我将行更改为: argvNew[1] = “~/foo.txt” 我在终端中收到此错误: wc: ‘~/foo.txt’: No such file or directory 直接从终端运行wc ~/foo.txt的行为与运行wc /home/user/foo.txt完全相同。 为什么execvp与~/ part存在问题?

为什么execv退出函数?

这是unix v6代码: http : //v6shell.org/history/if.c doex(earg) { … execv(ncom, nargv, np); return(1); } 因此,如果execv成功执行,我们将无法到达下一行并返回1.而execv将返回一些东西(0?)并退出函数doex。 但为什么? 除了你必须写这个: if ( execv(ncom, nargv, np) ) return (0); return (1); unix v6 exec – 手册页: http : //man.cat-v.org/unix-6th/2/exec

如何使用命令提示符运行.exe文件?

我在网上做裁判。 这是我的学校项目。 我正在从用户那里获取.c文件。 我能够使用命令提示符编译.c文件。 但我不知道如何运行这个文件。 我需要运行此文件,从文本文件中获取输入并将输出保存在文本文件中。 编译代码是: gcc main.c -o HelloWorld

C中的execvp不通过ar

我正在尝试使用exec来执行作为参数给出的命令列表。 在运行程序时输入的示例将是./assn2 ls date。 当我这样做时,只执行第一个命令。 #include #include #include #include int main(int argc, char *argv[]) { int args = argc-1; pid_t childpid = fork(); // error if (childpid 0) { printf(“Child process has begun. %d argument/s provided\n”, args); int i; for (i = 1; i <= argc; i++) { execlp(argv[i], argv[i], NULL); } execvp(argv[1], argv); } […]

主要方法执行

Hii, 我们通常看到程序执行开始于C,C ++,Java等语言的main方法(我熟悉这些)。 我想知道编译器如何知道程序中是否存在MAIN方法。 除了它是程序执行的入口点之外, main方法的含义是什么…这些标准对于C,C ++有何不同…… 提供您认为有用的任何链接……

在C中执行时显示%已完成

我有一个C程序需要5分钟才能执行。 所以我想在执行时是否能够显示完成的百分比或用户的任何类型的交互,因为闪烁的光标有点沉闷。 我正在考虑显示百分比,但我可以在某种程度上擦除,例如,如果任务1结束我放25%然后在任务2结束后25%变为50%? 在一些好的互动欢呼声中给我你的意见!=)

从execl()运行脚本

我想使用execl()来启动一个没有执行权限的脚本。 从命令行完成后,这很好用: [bf@bf-laptop-tbwb playground]$ /bin/sh test.sh I run ! 但是,当我想从C使用execl时,它只是启动另一个shell,而不运行我的脚本。 int main(int argc, char **argv) { execl(“/bin/sh”, “/home/bf/playground/test.sh”, NULL); return 0; } 我不能只运行脚本,因为我不能保证脚本是可执行的(它在嵌入式设备上,加载了FTP脚本)。

C管道,fork,dup和exec()

我正在尝试通过管道传递字符串列表到子进程,它应该通过/bin/cat使用execl() 。 我之前有工作,除了管道没有关闭所以程序一直在等待。 不知道我做了什么,现在根本不工作。 有人可以看到我的代码并告诉我,在子进程中cat没有显示str数据我做错了吗? int main(int argc, char** argv) { char *str[] = {“The”, “quick”, “brown”, “fox”, “jumped”, “over”, “the”, “lazy”, “dog”}; int fds[TOTAL_CHILDREN]; int writeFds; int catPID; int status; FILE * write_to_child; //create pipe if (pipe(fds) == -1) { perror(“creating pipe: failed”); exit(EXIT_FAILURE); } pipe(fds); //create subprocess for cat child switch (catPID) { […]

管,叉和执行 – 父母与子女过程的双向沟通

我的操作系统类中的赋值要求我通过在同一程序上递归调用exec来构建二进制进程树。 目标是将一些任意任务拆分为单独的进程。 父母应该通过未命名的管道与孩子和父母进行交流。 我们的想法是父母将每个孩子的一半工作发送,并且这种情况会递归地继续,直到满足基本案例,其中传递给每个孩子的字符串长度<= 2.然后孩子处理这些数据并将结果发回通过管道给父母。 为了更好地理解双向通信如何与c中的管道一起工作,我在继续实际分配之前创建了以下简单程序。 父节点从不从子进程读取数据。 我期待输出…… 在父母| 收到的消息:测试 相反,当我打印时,我得到…… 在父母| 收到消息: 似乎buff是空的,而不是从子进程中读取。 有人可以解释我做错了什么和/或标准方式 写给父母的exec’d孩子 从exec’d孩子的父母那里读书 从exec’d孩子写回父母 从父母的执行孩子那里读书 我需要使用exec(),pipe(),fork()。 谢谢。 /** * ********************************* * two_way_pipes.c * ********************************* */ #include #include #include #include #include #include #include #include #define PARENT_READ read_pipe[0] #define PARENT_WRITE write_pipe[1] #define CHILD_WRITE read_pipe[1] #define CHILD_READ write_pipe[0] #define DEBUGGING 1 int main(int argc, […]

我如何在C语言的后台exec()进程?

我在进程上做了一个fork和exec(),但是我想在后台运行它。 我怎样才能做到这一点? 我可以避免在上面调用waitpid,但是然后进程永远在那里,等待将它的状态返回给父进程。 还有其他方法吗?