program stops after execvp( command.argv[0], command.argv)

前提是你 提交于 2019-12-02 05:25:10

From man page of execvp(3)

The exec() family of functions replaces the current process image with a new process image

So your current process image is overwritten with the image of your command! Hence you need to use a fork+exec combination always so that your command executes in the child process and your current process continues safely as a parent!

On a lighter note I want to illustrate the problem with a picture as a picture speaks a thousand words. No offence intended :) :)

From the documentation on exec

The exec() family of functions replaces the current process image with a new process image. The functions described in this manual page are front-ends for execve(2). (See the manual page for > execve(2) for further details about the replacement of the current process image.)

If you want your process to continue, this is not the function you want to use.

@Pavan - Just for nit-pickers like myself, technically the statement "current process is gone" is not true. It's still the same process, with the same pid, just overwritten with a different image (code, data etc).

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!