Keluarga Exec*()

Pernah saya singgung bahwa ada beberapa fungsi dalam keluarga exec diantaranya:
- execvp
- execve
- execlp

Kegunaan exec adalah untuk menspawn proses child baru.Pada execlp dan execvp, parameter pertamanya adalah berupa file, maksudnya adalah anda harus sudah memastikan bahwa anda berada pada path yang benar. Sedangkan execve pada manualnya dituliskan bahwa execve mengeksekusi program yang ditunjuk oleh sebuah filename. Berikut contoh kodingan exec:

01#include <errno.h>
02std::string getErrMsg(int errnum);
03 
04main()
05{
06   string envFile("environment_variables.conf");
07   CReadEnvironmentVariablesFile readEnvFile;
08   char **Env_envp = readEnvFile.ReadFile(envFile);
09 
10   // Command to execute
11   char *Env_argv[] = { (char *)"/bin/ls", (char *)"-l", (char *)"-a", (char *) 0 };
12 
13   pid_t pID = fork();
14   if (pID == 0)                // child
15   {
16      // This version of exec accepts environment variables.
17      // Function call does not return on success.
18 
19      errno = 0;
20      int execReturn = execve (Env_argv[0], Env_argv, Env_envp);
21      if(execReturn == -1)
22      {
23         cout << "Failure! execve error code=" << errno << endl;
24         cout << getErrMsg(errno) << endl;
25      }
26 
27      _exit(0); // If exec fails then exit forked process.
28   }
29   else if (pID < 0)             // failed to fork
30   {
31      cerr << "Failed to fork" << endl;
32   }
33   else                             // parent
34   {
35      cout << "Parent Process" << endl;
36   }
37}

Comments

Popular posts from this blog

Bermain dengan Python dan Twitter (Part 2 Analisis Sentimen Sederhana)

UTS MPPL F 5113100121

Manajemen Waktu_5113100121