//○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