exec

execl と execv の違いは引数の渡し方。

// exec.c
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>

int main()
{
    printf("execl:\n");
    execl("/bin/cat", "cat", "exec.c", NULL);

    printf("execv:\n");
    char *argv[3] = {"cat", "exec.c", NULL};
    execv("/bin/cat", argv);
    return 0;
}

上のコードだと、exec.cが2度出力されると思いきや、execは成功すると戻らないらしい。
ので、結果として1回しか出力されない。