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回しか出力されない。