Windowsで使用しているMac OS Xにコードを移植して_tspawnl
います。
_tspawnl
Mac OS X または Linux に相当するものはありますか?
または、に相当するposixはありますか_tspawnl
次の方法でfork
とシステム コールを一緒に使用できます。execv
if (!fork()){ // create the new process
execl(path, *arg, ...); // execute the new program
}
fork
システムコールは新しいプロセスを作成し、システムexecv
コールはパスで指定されたアプリケーションの実行を開始します。たとえば、spawn
実行するアプリケーションの名前とその引数のリストを引数とする次の関数を使用できます。
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
int spawn (char* program, char** arg_list)
{
pid_t child_pid;
/* Duplicate this process. */
child_pid = fork ();
if (child_pid != 0)
/* This is the parent process. */
return child_pid;
else {
/* Now execute PROGRAM, searching for it in the path. */
execvp (program, arg_list);
/* The execvp function returns only if an error occurs. */
fprintf (stderr, “an error occurred in execvp\n”);
abort ();
}
}
int main ()
{
/* The argument list to pass to the “ls” command. */
char* arg_list[] = {
“ls”, /* argv[0], the name of the program. */
“-l”,
“/”,
NULL /* The argument list must end with a NULL. */
};
spawn (“ls”, arg_list);
printf (“done with main program\n”);
return 0;
}
この例は、この本の 3.2.2 章から取ったものです。(Linux での開発のための本当に良いリファレンス)。