Изпълнение на команда

#include<unistd.h>
int execl (const char *path, const char *arg, ...);
int execlp (const char *file, const char *arg, ...);
int execle (const char *path, const char *arg, ..., char *const envp[]);
int execv (const char *path, char *const argv[]);
int execvp (const char *file, char *const argv[]);
int execve (const char *filename, char * const argv[], char *const envp[]);

Полезни бележки:

  • l и v очертават дали аргументите се предоставят чрез списък или масив (вектор).

  • p означава, че пътеката на потребителя е търсена за даден файл. Командите, използващи вариантите p, могат да определят само име на файл, стига да са разположени в пътя на потребителя.

  • e отбелязва, че за новия процес се предоставя и нова среда.

Стойности на грешките

При успех на системните извиквания резултат не се връща. При неуспех системните извиквания връщат -1 и задават грешка една от следните стойности:

СтойностИнформация

E2BIG

Общият брой байтове в предоставения аргумент (arg) или средата (envp) е твърде голям.

EACCESS

Процесът няма разрешение за търсене на компонент в пътя; пътя не е обикновен файл; целевият файл не е маркиран като изпълним; или файловата система, на която се намира пътя или файла не е монтиран като изпълним.

EFAULT

Даденият указател не е валиден.

EIO

Възникна грешка вход / изход на ниско ниво (това е лошо).

EISDIR

Крайният компонент в пътя или интерпретаторът е директория.

ELOOP

Системата е срещнала твърде много символични връзки в пътя.

EMFILE

Процесът на извикване достигна своята граница за отворените файлове.

ENFILE

Беше достигнато ограничението за отворените файлове в цялата система.

ENOENT

Целта на пътя или файла не съществува или необходимата споделена библиотека не съществува.

ENOEXEC

Целта на пътя или файла е невалидна програма или е предназначена за различна архитектура.

ENOMEM

Няма достатъчно памет на ядрото за изпълнение на нова програма.

ENOTDIR

Непълен компонент в пътя не е директория.

EPERM

Файловата система, на която се намира пътят или файла, е монтирана nosuid, потребителят не е root и пътя или файл има зададен suid или sgid бит.

ETXTBSY

Целта или файла е отворен за писане от друг процес.

Last updated