C で記述されたクラスの 1 つに Linux シェルを作成しました。シェルは、ls、pwd、ps、top、cd などのコマンドを実行して完全に動作します。
ただし、MakeFile を使用すると (送信プロセスの一部であるため)、ターミナルで「make test」コマンドを使用するtcsetpgrp: Inappropriate ioctl for device"
と、プログラムのすべての正しい出力の中でエラーが発生します。Makefile 内ではtest: test.txt | .project4.c
、test.txt がコンマではなく改行で区切られたコマンド、ls、pwd、ps、top、cd になっています。このエラーは何ですか?どうすれば解消できますか?
これが私のメイクファイルです:
PAWPRINT=myname
project4:
clean:
rm -f *.o
nuke:
rm -f *.o project4 *.gz
test: project4
cat test.txt | ./project4
submit.sh:
wget -O submit.sh http://somewebsite.com/submit.sh
chmod +x submit.sh
project4.tar.gz: project4.c test.txt Makefile
mkdir -p dist
cp $^ dist
tar -cvzf $@ dist
submit: submit.sh project4.tar.gz
PAWPRINT=$(PAWPRINT) sh submit.sh project4.tar.gz
ここに私のtest.txtファイルがあります:
sleep 1000 &
jobs
pwd
ls
echo hello > a.txt
echo world > b.txt
cat a.txt b.txt > c.txt
cat c.txt
私のプログラムは、メイクファイルの外でこれらのコマンドを個別に実行できます。これらのコマンドを処理するようにプログラムを設計しました。これが割り当ての目的だからです。