រៀនពាក្យបញ្ជាលីនុច - ប្រតិបត្តិ

execl, execlp, execle, execv, execvp - ប្រតិបត្តិ ឯកសារ

សង្ខេប

#include

external char ** environ;

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 []);

ការពិពណ៌នាអំពីអនុគមន៍ exec

ក្រុមគ្រួសារមុខងារ exec ជំនួសរូបភាពដំណើរការបច្ចុប្បន្នជាមួយរូបភាព ដំណើរការ ថ្មី។ មុខងារដែលបានពិពណ៌នានៅក្នុងទំព័រសៀវភៅដៃនេះគឺជាផ្នែកខាងមុខសម្រាប់អនុគមន៍ execve (2) ។ (សូមមើលទំព័រសៀវភៅដៃសម្រាប់ប្រតិបត្តិសម្រាប់ព័ត៌មានលម្អិតអំពីការជំនួសដំណើរការបច្ចុប្បន្ន។ )

អាគុយម៉ង់ដំបូងសម្រាប់អនុគមន៍ទាំងនេះគឺជាឈ្មោះផ្លូវរបស់ឯកសារដែលនឹងត្រូវបានប្រតិបត្តិ។

const char * arg និង ellipses ជាបន្តបន្ទាប់នៅក្នុង អនុគមន៍ execl , execlp និង execle អាចត្រូវបានគេគិតថាជា arg0 , arg1 , ... , argn ។ ពួកវារៀបរាប់អំពីបញ្ជីនៃចង្អុលមួយឬច្រើនទៅខ្សែអក្សរដែលបញ្ចប់ដោយ null ដែលតំណាងឱ្យបញ្ជីអាគុយម៉ង់សម្រាប់កម្មវិធីដែលបានប្រតិបត្តិ។ អាគុយម៉ង់ដំបូងតាមអនុសញ្ញាគួរចង្អុលទៅឈ្មោះឯកសារដែលជាប់ទាក់ទងជាមួយឯកសារកំពុងត្រូវបានប្រតិបត្តិ។ បញ្ជីអាគុយម៉ង់ ត្រូវតែត្រូវ បានបញ្ចប់ដោយព្រួញ NULL

អនុគមន៍ execv និង execvp ផ្តល់អារេនៃចង្អុលទៅខ្សែអក្សរដែលត្រូវបានបញ្ចប់ដោយចៃដន្យដែលតំណាងឱ្យបញ្ជីអាគុយម៉ង់ដែលមានសម្រាប់កម្មវិធីថ្មី។ អាគុយម៉ង់ដំបូងតាមអនុសញ្ញាគួរចង្អុលទៅឈ្មោះឯកសារដែលជាប់ទាក់ទងជាមួយឯកសារកំពុងត្រូវបានប្រតិបត្តិ។ អារេនៃព្រួញ ត្រូវតែត្រូវ បានបញ្ចប់ដោយព្រួញ NULL

អនុគមន៍ execle ក៏បញ្ជាក់បរិស្ថាននៃដំណើរការដែលបានប្រតិបត្តិតាមចង្អុល NULL ដែលបញ្ចប់បញ្ជីនៃអាគុយម៉ង់ក្នុងបញ្ជីប៉ារ៉ាម៉ែត្រឬព្រួញទៅអារ៉េអារ៉េជាមួយប៉ារ៉ាម៉ែត្របន្ថែម។ ប៉ារ៉ាម៉ែត្របន្ថែមនេះគឺជាអារេនៃចង្អុលទៅខ្សែអក្សរដែលបានបញ្ចប់ដោយ null ហើយ ត្រូវតែ បញ្ចប់ដោយព្រួញ NULL ។ អនុគមន៍ផ្សេងទៀតយកបរិស្ថានសម្រាប់រូបភាពដំណើរការថ្មីពី បរិស្ថាន អថេរខាងក្រៅក្នុងដំណើរការបច្ចុប្បន្ន។

មុខងារទាំងនេះមួយចំនួនមានន័យធម្មជាតិ។

មុខងារ execlp និង execvp នឹងធ្វើឱ្យស្ទួនសកម្មភាពរបស់សែលក្នុងការស្វែងរកឯកសារដែលអាចប្រតិបត្តិបានបើឈ្មោះឯកសារដែលបានបញ្ជាក់មិនមានតួអក្សរសញ្ញា / / ។ ផ្លូវស្វែងរកគឺជាផ្លូវដែលបានបញ្ជាក់ក្នុងបរិស្ថានដោយអថេរ PATH ។ ប្រសិនបើអថេរនេះមិនបានបញ្ជាក់ផ្លូវលំនាំដើម ``: / bin: / usr / bin '' ត្រូវបានប្រើ។ លើសពីនេះទៀតកំហុសមួយចំនួនត្រូវបានគេយកចិត្តទុកដាក់ជាពិសេស។

ប្រសិនបើសិទ្ធិត្រូវបានបដិសេធចំពោះឯកសារ (ការប៉ុនប៉ងប្រតិបត្តិបានត្រឡប់ EACCES ) មុខងារទាំងនេះនឹងបន្តស្វែងរកផ្លូវស្វែងរកដែលនៅសល់។ ទោះយ៉ាងណាក៏ដោយប្រសិនបើគ្មានឯកសារផ្សេងទៀតត្រូវបានរកឃើញនោះទេពួកគេនឹងត្រឡប់ជាមួយអថេរ variable errno ដែល កំណត់ទៅ EACCES

បើឯកសារបឋមកថាមិនត្រូវបានទទួលស្គាល់ (ការប៉ុនប៉ងប្រតិបត្តិបានត្រឡប់ ENOEXEC ) មុខងារទាំងនេះនឹងដំណើរការសែលជាមួយផ្លូវឯកសារជាអាគុយម៉ង់ដំបូងរបស់វា។ (ប្រសិនបើការប៉ុនប៉ងនេះបរាជ័យ, គ្មានការស្វែងរកបន្ថែមទេ។ )

ត្រឡប់តម្លៃនៃអនុគមន៍ exec

ប្រសិនបើអនុគមន៍ exec ណាមួយត្រឡប់មកវិញកំហុសនឹងកើតឡើង។ តម្លៃត្រឡប់គឺ -1, ហើយអថេរ variable ទូទាំងសកលនឹងត្រូវបានកំណត់ដើម្បីចង្អុលបង្ហាញកំហុស។