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

#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 Целта или файла е отворен за писане от друг процес.

results matching ""

    No results matching ""