我想在Linux中使用fork和exec系统调用来运行一个C程序。我已经编写了一个名为msg.c的程序并且它正常工作。然后我又写了一个程序msg1.c。
当我执行./a.out msg.c时,它只是将msg.c打印出来作为输出,但并没有执行我的程序。请问应该怎样操作?
当我执行./a.out msg.c时,它只是将msg.c打印出来作为输出,但并没有执行我的程序。请问应该怎样操作?
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h> /* for fork */
#include <sys/types.h> /* for pid_t */
#include <sys/wait.h> /* for wait */
int main(int argc,char** argv)
{
/*Spawn a child to run the program.*/
pid_t pid=fork();
if (pid==0)
{ /* child process */
// static char *argv[]={"echo","Foo is my name.",NULL};
execv("/bin/echo",argv);
exit(127); /* only if execv fails */
}
else
{ /* pid!=0; parent process */
waitpid(pid,0,0); /* wait for child to exit */
}
return 0;
}