Почему execve возвращается не так, как пользователь? - PullRequest
1 голос
/ 21 ноября 2019

Так что я довольно новичок в функциях семейства exec языка C, и мне было интересно, почему cal возвращает

usage: cal [-13smjyV] [[[day] month] year]

При передаче в execve (); ниже

    pid = fork( ) ;
    if ( pid == 0 )  {
            char *myArgv[ ] = { "cal", "4", "1980", "NULL"};
            char *myEnv[ ] = { "HOME=/usr/bin", NULL}  ;
            execve( "/usr/bin/cal", myArgv, myEnv) ;
    } else {
            printf("parent process waiting for execve complete \n" );
    }

тогда как, когда я вызываю 'cal 4 1980' вручную через мой терминал, я получаю фактическую распечатку?

          April 1980     
     Su Mo Tu We Th Fr Sa
            1  2  3  4  5
      6  7  8  9 10 11 12
     13 14 15 16 17 18 19
     20 21 22 23 24 25 26
     27 28 29 30
...