1

ここに C++ のコードがあります。Linuxでプログラムgrepを実行したい。コンパイル時、エラーはありません。

com.append("grep");
execl(com.c_str(), "-n", "-w", word.c_str(), list_files.at(i + 1).c_str(), NULL);

しかし、C++ プログラムを実行すると、何もありませんでした。次に、errno でエラーを見つけたかったのです。

結果は 2 でした。これは、彼がこのプログラムを見つけることができなかったことを意味していることがわかります。

しかし、C++ プログラムから grep を開始するにはどうすればよいでしょうか?

4

2 に答える 2

6

execl()実行可能ファイルを検索しません$PATHgrepコマンドへのフル パスを指定するか、 execlp()which does search を使用します$PATH

man execl詳細については。

于 2011-09-13T22:26:37.747 に答える
0

バイナリが見つからない可能性があります。

  • 追加する前に com に何が含まれているかを確認してください(/usr/bin/末尾にパスセパレーターが付いた、のような適切なパスが含まれている必要があります...)

  • 代わりに「/usr/bin/grep」を試してください

于 2011-09-13T22:26:45.033 に答える