Difference between “system” and “exec” in Linux?

前端 未结 12 1933
天命终不由人
天命终不由人 2020-11-28 05:18

What is the difference between system and exec family commands? Especially I want to know which one of them creates child process to work?

12条回答
  •  时光说笑
    2020-11-28 05:44

    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.

提交回复
热议问题