当前位置: 技术问答>linux和unix
如何在C程序中启动另一个进程?
来源: 互联网 发布时间:2016-10-06
本文导语: 如何在C程序中启动另一个进程?该进程启动后期望是一个独立的进程,当前进程不需要管理也不需要关心这个进程。 实际上,我是期望在一个程序中启动另一个程序,启动后,两者成为互不相关的程序。 ...
如何在C程序中启动另一个进程?该进程启动后期望是一个独立的进程,当前进程不需要管理也不需要关心这个进程。
实际上,我是期望在一个程序中启动另一个程序,启动后,两者成为互不相关的程序。
实际上,我是期望在一个程序中启动另一个程序,启动后,两者成为互不相关的程序。
|
嗯,需要注意的是system()是需要返回结果的,也就是父进程会一直阻塞,直到子进程结束。
当然,可以在system()参数的最后,加个&,以让子进程后台运行。
|
system或者exec函數可不可以?
|
system, popen, fork+exec
|
就用system或者exec族的函数调用一下吧
|
先fork,然后再用exec调用下就好了。个人感觉是这样,具体你可以试试
|
#include
#include
#include
#include
#include
#include
int main()
{
pid_t childpid;
int status;
if((childpid=fork())==-1) //fork( )命令
{
perror("fork:");
}
else if(childpid==0) // This is child process!
{
char *args[]={"/home/sk/code/GNU/pripds",NULL};
puts("in child:n");
if(execve("pripds",args,NULL)==-1) // pripds 是我自己的一个程序。。
{
perror("execve:");
}
exit(EXIT_SUCCESS);
}
else //This is parent process!
{
waitpid(childpid,&status,0); //这里也可以用非阻塞wait,这样两个进程就不会相干扰了
puts("in parent:n");
printf("tparent pid=%dn",getpid());
}
}
看看是否有用。。^^
#include
#include
#include
#include
#include
int main()
{
pid_t childpid;
int status;
if((childpid=fork())==-1) //fork( )命令
{
perror("fork:");
}
else if(childpid==0) // This is child process!
{
char *args[]={"/home/sk/code/GNU/pripds",NULL};
puts("in child:n");
if(execve("pripds",args,NULL)==-1) // pripds 是我自己的一个程序。。
{
perror("execve:");
}
exit(EXIT_SUCCESS);
}
else //This is parent process!
{
waitpid(childpid,&status,0); //这里也可以用非阻塞wait,这样两个进程就不会相干扰了
puts("in parent:n");
printf("tparent pid=%dn",getpid());
}
}
看看是否有用。。^^