Я должен выполнить команду Unix с другим args в цикле. Теперь интересно, должен ли я использовать execvp (), передающий в cmd и args или системе использования, создавая строку, состоящую из cmd + args?
Что ж, остальные ответы в основном верны.
Система, хотя не только fork
s и затем exec
s, она не exec
ваш процесс, она запускает оболочку по умолчанию, передавая вашу программу в качестве аргумента.
Таким образом, если вам действительно не нужна оболочка (для разбора параметров и т.п.), гораздо эффективнее сделать что-то вроде:
int i = fork();
if ( i != 0 ) {
exec*(...); // whichever flavor fits the bill
} else {
wait(); // or something more sophisticated
}
Я бы использовал execvp только в том случае, если не смог добиться желаемого с помощью системы. Обратите внимание, что для получения эквивалента системы вам также понадобятся execvp, fork и некоторая обработка сигналов.
Просто нажмите Ctrl + нажмите левую кнопку мыши на Person
в среде IDE и/или прочитайте ее источник и/или javadoc.
Если вы еще не используете среду IDE, я могу порекомендовать Eclipse или IntelliJ IDEA . Если вы используете Java EE (JSP/Servlet и подобные материалы), либо возьмите Eclipse для Java EE , либо оплатите издание IDEA Ultimate .
-121--4154788-Тим прав, и Шейн пропустил. Вот дополнительные примеры:
R> df <- data.frame(a = as.character(10:15))
R> df <- data.frame(df, num = as.numeric(df$a),
numchr = as.numeric(as.character(df$a)))
R> df
a num numchr
1 10 1 10
2 11 2 11
3 12 3 12
4 13 4 13
5 14 5 14
6 15 6 15
R> summary(df)
a num numchr
10:1 Min. :1.00 Min. :10.0
11:1 1st Qu.:2.25 1st Qu.:11.2
12:1 Median :3.50 Median :12.5
13:1 Mean :3.50 Mean :12.5
14:1 3rd Qu.:4.75 3rd Qu.:13.8
15:1 Max. :6.00 Max. :15.0
R>
Наш data.frame
теперь содержит сводку по столбцам коэффициентов (счетчикам) и числовым суммам as.numeric ()
--- что неверно , поскольку он получил числовые уровни коэффициентов --- и (правильную) сводку as.numeric (as.acter char())
Семейство функций exec
заменит текущий процесс новым, в то время как система
раскошелится на новый процесс и дождется его завершения. Какой использовать, зависит от того, что вы хотите.
Поскольку вы делаете это в цикле, я думаю, вы не хотите заменять исходный процесс. Поэтому я предлагаю вам попробовать перейти к системе
.