質問
execファミリを使用する必要があるプロジェクトがあります。私のプロジェクトは、インタラクティブなシェルを作成することから成ります。シェルは、cd、ls、echoなどのいくつかの基本的なコマンドを実装します。私はexecの使用を研究してきましたが、有用なサイトは見つかりませんでした。推奨されるリンクがあれば役立ちます。
int ret;
ret = execl ("/bin/ls", "ls", "-1", (char *)0);
この操作の出力を取得して画面に表示するにはどうすればよいですか?
解決
あなたが書いたコードは、他に何もしない簡単なテストプログラムで機能します。 execlを呼び出すと、プロセスはすべての古いファイルハンドルを保持することに注意してください。したがって、execlを呼び出したときの標準出力は、新しいバイナリがロードされたときに同じになります。出力を端末に送信するだけの場合は、stdoutが端末に送信されることを確認してください。
別のプログラムでI / Oを行いたい場合、popenはこれに適しています(mgbが述べたように)。新しいプロセスを分岐し、配管を設定し、execのバリアントを呼び出し、通信に使用できるファイルハンドルを返します。
他のヒント
実行
int fd = 1;
dup(fd);
close(fd);
出力を画面に取得します。
所属していません StackOverflow