Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin

...

Prosessi

...

vaihtaa

...

suoritettavaa

...

koodia

...

funktiolla

...

exec().

...

Siitä

...

on

...

kuusi

...

erilaista

...

muotoa,

...

jotka

...

eroavat

...

komentoriviargumenttien

...

ja

...

ympäristömuuttujien

...

välityksessä.

...

Koodia

...

etsitään

...

annetun

...

polkunimen

...

perusteella

...

funktioissa

...

execl(),

...

execv(),

...

execle(),

...

execve()

...

tai

...

tiedostonimen

...

perusteella

...

ympäristömuuttujassa

...

PATH

...

luetelluista

...

hakemistoista

...

fuktioissa

...

execlp()

...

tai

...

execvp();.

...

Koodille

...

voi

...

välittää

...

komentoriviargumentteja

...

joko

...

listana

...

(execl())

...

tai

...

vektorina

...

(execv()).

...

Koodille

...

voi

...

välittää

...

edellisten

...

lisäksi

...

myös

...

haluamansa

...

ympäristömuuttujat

...

aina

...

vektorina

...

execle()

...

tai

...

execve()

...

tai

...

äidin

...

ympäristömuuttujat

...

periytyvät

...

lapselle

...

sellaisenaan

...

environ-muuttujasta.

{
Code Block
}
#include < unistd.h >
int execl(const char pathname, const char *arg0, ... / NULL */);
int execv(const char *pathname, char *const argv[]);
int execle(const char pathname, const char *arg0, ... / NULL, char *const envp[] */);
int execve(const char *pathname, char *const argv[], char *const envp\[\]);
int execlp(const char filename, const char *arg0, ... / NULL */)
int execvp(const char *filename, char *const argv[]);
{
Code Block
}
int
 main(void)
{
      pid_t pid;

      if ( (pid = fork()) < 0)
             perror("fork error");
      else if (pid == 0)
 {           {/* specify pathnamepolku, specifyympäristö environment */
             if (execle("/bin",
                        "echo", "myarg1", "MY ARG2", (char *) 0,
                         env_init) < 0)
               perror("execle error");
      }
      if (waitpid(pid, NULL, 0) < 0)
          perror("wait error");

      if ( (pid = fork()) < 0)
            perror("fork error");
      else if (pid == 0)
 {           {/* specify filenamepolku, inherit environmentympäristö */
              if (execlp("echo",
                           "echo", "only 1 arg", (char *) 0) < 0)
                   perror("execlp error");
      }
      exit(0);
}