2017-05-09 3 views
-1

実行中のCプログラム内でファイルポインタを使用してプログラムやファイルを実行する方法はありますか?通常のファイル名とシステム/フォークなどを使用する必要がありますか?それが重要なのであれば、これをLinuxに書いてください。Cプログラム内のポインタから関数を実行

このようなものが可能であれば基本的に、私が求めている:

FILE * fp=fopen("somefile") 
//dostuff 

は、ファイルを実行します(FPと、ないファイル名で)ここでは、FPで指さ

+0

あなたは[最小限の、完全で、かつ証明可能な例](https://stackoverflow.com/help/mcve)をお持ちですか? –

答えて

3

は、任意のはあります実行中のプログラムやファイルをファイルポインタを使って実行する方法

あなたが何を求めているのかは分かりませんあなたができることをいくつか示してみてください。ファイル名でexecve()がプログラムを実行する

int execve(const char *filename, char *const argv[], char *const envp[]); 

は指さとargvは、新しいプログラムに渡される引数の文字列の配列です:

はたぶん、あなたはおよそ execve()話をしています。同様に fexecve()があり、 execve()と同じ働きをしますが、実行されるファイルはパス名ではなくファイル記述子 fdで指定されます。

または、プログラムを実行するためにsystem()を使用できます。例えば:これが実行されるようにMYPROGRAMを待ちます

int result = system("./myProgram 2 3"); 

、その後、終了コードを取得します。

最後に、fork()というプロセスを作成するためのシステムコールを使用できます。

関連する問題