Если я пытаюсь выполнить эти команды:
int main(int argc, char* argv[]) { execl("/bin/echo","echo","list ","of", "files:\n",NULL); execl("/bin/ls","ls","-al",NULL); return 0; }
Только первая выполняется, почему?
execl ЗАМЕНЯЕТ текущий процесс - это не подпрограмма. Вместо этого вы можете попробовать system().
system()
Потому что, как только вы запустите exec*() , ваше приложение перестанет существовать . Если вы хотите запустить более одного внешнего процесса, вам нужно будет fork().
exec*()
fork()
Сначала нужно выполнить форк.
Попробуйте запустить
int main(int argc, char* argv[]) { if( vfork() == 0 ) execl("/bin/echo","echo","list ","of", "files:\n",NULL); if( vfork() == 0 ) execl("/bin/ls","ls","-al",NULL); return 0; }