//○execコール
//現在のプロセスにプログラムがオーバーライド(上書き)されます


//■パスを指定してアプリケーションをexecする

//viを起動させてtest.cppを開く(viのパスも指定)
//execl("/bin/vi","","test.cpp","c",NULL);

//▽execl 引数を指定して渡す
/*

#include <stdio.h>
#include <unistd.h>

int main(char*args[]){

	//commandLine.exe 前回作成したコマンドラインの内容を表示するプログラム
	//execl("commandLine.exe","a",NULL);//引数の数は可変
	//execl("commandLine.exe","a","b",NULL);
	execl("commandLine.exe","a","b","c",NULL);

	return 0;
}

//処理結果

//$ ./test
//a
//b
//c



//▽execv 引数を配列で渡す

#include <stdio.h>
#include <unistd.h>

int main(){

	char *args[4];
	args[0]="a";
	args[1]="b";
	args[2]="c";
	args[3]=NULL;//必ず必要

	//commandLine.exe 前回作成したコマンドラインの内容を表示するプログラム
	execv("commandLine.exe",args);

	return 0;
}

//処理結果

//$ ./test
//a
//b
//c


//■環境変数に登録されているアプリケーションをexecする

//▽execlp 引数を指定して渡す

#include <stdio.h>
#include <unistd.h>

int main(char*args[]){
	//vi test.c コマンドラインと同じ意味
	execlp("vi","","test.c",NULL);

}


//▽execvp 引数を配列で渡す


#include <stdio.h>
#include <unistd.h>

int main(char*args[]){

	char *env[3];
	env[0]="";
	env[1]="test.c";
	env[2]=NULL;
	//vi test.c コマンドラインと同じ意味
	execvp("vi",env);

}


//■アプリケーションの環境変数を変更してexecする

//▽execle 引数を指定して渡す

#include <stdio.h>
#include <unistd.h>

int main(char*args[]){

	char*env[5];
	env[0]="PATH=/";//環境変数の設定
	//shのPATHがルートに変わったため /bin/ls の様にしないとコマンドが効かなくなります
	env[1]=NULL;

	execle("/bin/sh","",NULL,env);

	return 0;
}

//▽execve 引数を配列で渡す

#include <stdio.h>
#include <unistd.h>

int main(){

	char*env[5];
	env[0]="PATH=/";//環境変数の設定
	//shのPATHがルートに変わったため /bin/ls の様にしないとコマンドが効かなくなります
	env[1]=NULL;

	char*args[2];
	args[0]="";
	args[1]=NULL;

	execve("/bin/sh",args,env);

	return 0;
}

*/



▲トップページ > Linux と C