当前位置: 技术问答>linux和unix
关于进程创建的问题
来源: 互联网 发布时间:2016-07-12
本文导语: 刚从WINDOWS转向LINUX开发,很多东西不熟悉。 还请大家多多指教! 问题描述: 进程A为守护进程,进程A在某种特定的情况下启动进程B。进程B被多次并发启动。 我使用了SYSTEM这个函数,结果进程A就阻塞了,知道B结束...
刚从WINDOWS转向LINUX开发,很多东西不熟悉。
还请大家多多指教!
问题描述:
进程A为守护进程,进程A在某种特定的情况下启动进程B。进程B被多次并发启动。
我使用了SYSTEM这个函数,结果进程A就阻塞了,知道B结束他才返回。
我想问一下有什么方法可以创建一个进程,并且主进程(A)会继续执行?
谢谢大家。
还请大家多多指教!
问题描述:
进程A为守护进程,进程A在某种特定的情况下启动进程B。进程B被多次并发启动。
我使用了SYSTEM这个函数,结果进程A就阻塞了,知道B结束他才返回。
我想问一下有什么方法可以创建一个进程,并且主进程(A)会继续执行?
谢谢大家。
|
system函数实际上会分别调用fork,exec和waitpid。进程A阻塞就是因为system中调用了waitpid等待子进程结束。你可以调用fork,exec创建进程,在A中不调用waitpid函数。
|
用fork 或 vfork 就可以了.
pid_t b_pid = vfork();
if (b_pid == 0)
{
//子进程运行 B
char* argv[] =
{
"testb",
"参数1",
"参数2",
0
};
if (execvp("testb", argv)
pid_t b_pid = vfork();
if (b_pid == 0)
{
//子进程运行 B
char* argv[] =
{
"testb",
"参数1",
"参数2",
0
};
if (execvp("testb", argv)