execv相关内容
我写了两个简单的程序: int main(int ac, char **argv) {execv("/home/me/Desktop/execvtest2", argv);} 和 int main(int ac, char **argv) {execv("/home/me/Desktop/execvtest1", argv);} 我已经编译了它们gcc -g 到相应的输出文件.我正在使用
..
这是我的代码的细分. 我有一个程序可以派生一个孩子(并将孩子的 pid 注册到一个文件中),然后做自己的事情.孩子成为程序员用 argv 有尊严的任何程序.当子进程完成执行时,它会向父进程发送一个信号(使用 SIGUSR1),以便父进程知道从文件中删除子进程.父级应该停止一秒钟,通过更新其表来确认已删除的条目,然后从中断的地方继续. pid = fork();开关(PID){情况1:{退出
..
到目前为止,我唯一感到困惑的部分是如何将 execv 设置为第一个参数作为当前工作目录.我试过两个“."和“~",两者都没有在屏幕上执行任何操作;“/"也是一样和“/~".我对如何让 execv 运行这样的东西感到困惑: $ ./prog ls -t -al 并让它在当前目录或与文件所在的目录相同的目录中执行程序执行后的命令(这些命令存储在argv中). 我的代码: #include
..
我正在使用JNI调用本机C方法,但是我的java程序在第一个方法调用后终止(退出代码0),并且没有到达其余代码. 这是我的出处: Exec.java: package libs; public class Exec { static { System.load(System.getProperty("user.dir")+"/bin/"+"libexe
..
我正在执行父代码.然后,我先执行fork,然后执行execvpe.我"execvpe"的新程序会抛出很多控制台消息,我想隐藏这些消息. 我是否可以将子进程中的所有stdout和stderr消息重定向到文件上? 我尝试了close(1),这样我就不会在控制台(stdout)上转储消息了,这没有帮助 解决方案 pid_t pid = fork(); /* Child process
..
我有一个问题,我想做一个fork,例如一个由20个进程创建的fork,这个fork被创建,在没有创建最后一个fork之前不应该做任何事情,而我想使用信号量来做,我该如何做呢?实施吗? for (i=0; i
..
这里是我的代码细分. 我有一个程序可以派生一个孩子(并将孩子的pid注册到文件中),然后执行自己的操作.子级变为程序员用argv修饰的任何程序.当子级执行完毕后,它将使用SIGUSR1发送信号给父级进程,因此父级知道要从文件中删除该子级.父级应该停一秒钟,通过更新其表来确认已删除的条目,然后从上次中断的地方继续. pid = fork(); switch(pid){ case -1:{
..
首先,我编写了如下的c ++代码: #include int main() { int a,b; while(scanf("%d %d",&a,&b) == 2) printf("%d\n",a+b); return 0; } 我用g++ -o a a.cpp进行编译. 然后,我编写了如下的python代码: impo
..
在linux终端中,我可以输入 echo你好! > / path / to / file 我想我可以使用execv来做同样的事情: #include #include #include int main(void){ char * write_cmd [] = {“ echo”,“
..
到目前为止,我唯一困惑的是如何使用第一个参数将execv设置为当前工作目录.我都尝试过“."和“〜",两者均未在屏幕上执行任何操作;与"/"相同.和"/〜".我对如何让execv运行如下内容感到困惑: $ ./prog ls -t -al 在程序执行后(存储在argv中)在当前目录或与文件所在的目录相同的目录中执行命令(根据使用该文件的人而有所不同). 我的代码: #incl
..
我正在尝试使用以下C代码运行可执行文件: int main(int argc, char *argv[]) { printf("hello.\n"); sleep(2); if (execlp("ls","ls","-l",NULL) == -1) printf("Error occured during execute ls.\n"
..
我正在编写一个Linux应用程序.如果我调用fork()然后运行需要控制台输入的应用程序,会发生什么情况?考虑下面的代码: int process_id = fork(); if (process_id != 0) { /* this is the parent process */ error = execv("../my_other_app", "parameter1"
..
我正在使用GCC 4.2的MacOS-X Lion。这段代码有效,但我收到了一个警告,我想修复: #include main() { char * args [] = {“/ bin / ls”,“-r”,“-t”,“-l”,(char *)0 }; execv(“/ bin / ls”,args); } 警告:不推荐将字符串常
..
我写了两个简单的程序: int main(int ac,char ** argv){ execv(“/ home / me / Desktop / execvtest2”,argv); } 和 int main(int ac,char ** argv){ execv(“/ home / me / Desktop / execvtest1”,argv);
..
我有一个进程是分叉到子进程。如果父进程存在,则子进程不应存在。所以,我调用:: prctl(PR_SET_PDEATHSIG,SIGKILL)在子进程中杀死它,如果父死亡。最终发生的是父线程调用pthread_exit,并且该线程最终成为杀死子进程的催化剂。 这是我的代码: parent.cpp: #include
..
如果我使用fork()和execv()生成几个子进程在后台运行,我想把它们中的一个到前台,我该怎么办? 我试图写一个shell,可以在前台或后台启动进程。 解决方案 “和”foreground“不是一般用于进程的术语,而只适用于可以按需等待作业的shell。
..
我在这里想要一个小单元测试。但正如我所期望的程序不能正常工作。 的char * ARGS [2]; ARGS [0] =(字符*)“的/ usr / bin中/火狐”; ARGS [1] = NULL; PID =叉(); 的printf(“分叉和我的PID为%d \\ n”,PID); //检查错误 如果(PID℃,){ 的pri
..
指的是旧的作业问题: / *实施“的/ usr / bin中/ PS -ef |在/ usr /斌/更多的”* / 使用管道。 的#include<&stdio.h中GT; #包括LT&;&unistd.h中GT; #包括LT&;&stdlib.h中GT;诠释的main() { INT FDS [2]; INT孩子[2]; 的char * argv的[3]; 管(FDS)
..
我不知道我做错了......但这里是正在执行的code的片段: 如果(叉()== 0) { //子 INT FD =开放(文件名,O_RDWR | O_CREAT,S_IRUSR | S_IWUSR); dup2(FD,1); //使标准输出到文件 execvp(“LS”,“LS”); 关闭(FD);
..
我希望我没有错过过类似的问题。 我想code我自己的一个小型外壳,采用原始的C函数。 我得到的东西应该工作,但我有一个指针,使一切错误。 我的 adrCmd 指针应该从 searchCmd()函数命令路径字符串,并保持相同的值在主功能。 在的事实:它指向右边值 searchCmd(),但不是在的main() 这里的code: INT searchCmd(字符* CMD,字符* adr
..