system()
calls out to sh
to handle your command line, so you can get wildcard expansion, etc. exec()
and its friends replace the current process image with a new process image.
With system()
, your program continues running and you get back some status about the external command you called. With exec()
, your process is obliterated.
In general, I guess you could think of system()
as a higher-level interface. You could duplicate its functionality yourself using some combination fork()
, exec()
, and wait()
.
To answer your final question, system()
causes a child process to be created, and the exec()
family do not. You would need to use fork()
for that.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…