Linuxで問題のあるBashシェル(C)[閉じる]

Linuxで問題のあるBashシェル(C)[閉じる]

私に従ってください前の記事、消えない迷惑なバグもあります。

bash私はLinuxでこのコマンドのエミュレータを書いた。

次を使用して一度にコードを実行するとき:

ls Debug/ | grep r
ls >> file.jer & ls & ls & ls &
ls >> file.jer
ls > file1.rrr
ls & ls | grep e
ls & ls & ls &
ls Debug/ | grep r
ls Debug/ > k.out
ls Debug/ >> k.out
exit

ls >> file.jerその後、プログラムは3行目に書き込みますls: cannot access : No such file or directory。プログラムを実行するたびにEnterキーを押します。それぞれこれで正しい出力が得られます。何度もデバッグしようとしましたが、問題が見つかりませんでした。

特定の問題:コードを実行してをクリックすると、ls Debug/ | grep r正しい出力が表示されます。次に、をクリックすると、ls >> file.jer & ls & ls & ls &ここにあるコードも正しく実行されます。しかし、をクリックするとls >> file.jer非常に間違ったことが発生し、そのソースが見つからないようです。また、コマンドの出力は次の3rdとおりです。そのファイルやディレクトリはありません。しかし、一度に実行すると、ファイルはfile.jer現在のパスの内容を追加するため、明らかに間違っています。

main1つ、2つの.hファイルと2つのファイルがあります.c

答え1

問題が解決しました!

エラーが発生する理由は、char**変数を変更する関数に変数を送信してから、freeその変数をmainに戻すからです。これは許可されていないため、1つを送信するまですべてchar***が解決されます。

みんなありがとうございます。

関連情報