我需要在循环中执行带有不同args的unix命令.现在我想知道我是否应该使用execvp(),传入cmd和args,或使用系统,构建一个由cmd + args组成的字符串?
Jef*_*ker 10
那么,其他答案大多是正确的.
系统,虽然不仅fork是s,然后exec是s,它不是exec你的进程,它运行默认的shell,将你的程序作为参数传递.
所以,除非你真的想要一个shell(用于参数解析等),否则执行以下操作会更有效:
int i = fork();
if ( i != 0 ) {
exec*(...); // whichever flavor fits the bill
} else {
wait(); // or something more sophisticated
}
Run Code Online (Sandbox Code Playgroud)
该exec系列函数将更换一个新的当前进程,而system将叉掉新的进程,然后等待它完成.使用哪一个取决于你想要什么.
由于你是在循环中这样做的,我猜你不想替换原始进程.因此,我建议你试着去system.
| 归档时间: |
|
| 查看次数: |
3253 次 |
| 最近记录: |