これは私が必要とするものです: 私は C プログラムを作成しました。それは 2 つの子をフォークします: P1、P2 また、いくつかの bash スクリプトを作成しました。
script1.sh を実行するには P1 が必要で、script2.sh を実行するには P2 が必要です。現時点では、関数を使用しているsystem("script_name.sh")
かsystem("script_name &")
、非同期にするかはわかりませんが、現時点では思い通りに動作しないため、それが正しい選択であるかどうかはわかりません。ところで:
script1.sh はこれを行います:
# it search a word in a dictionary and write in a file the exact line in which that
# word is in the dictionary, i.e. word="a" is in position "1" so
# it will write "1" in the first line of file.
while read line;
do
sleep 1
TRASFORMATA=$( echo "$line" | tr "[:upper:]" "[:lower:]" | sed -e 's/ //g' )
echo "WORDS TO SEARCH IN DICTIONARY : $TRASFORMATA:"
WORD=$( fgrep -w -i "$TRASFORMATA" "$dictfile" ) # got from dictionary
echo $WORD
if [ -z "$WORD" ] ## if it's not in dictionary
then
echo "$WORD not found!"
echo
else
echo "Word and relative line found.........."
##### if found, it write the relative line to a file #####
LINE1=$( fgrep -w -n "$WORD" "$dictfile" | sed s/:$WORD//g )
echo "$LINE1" >> "$FILE_OUTPUT"
fi
done < "$FILE_INPUT"
script2.sh はこれを行います:
# delete lines starting with letter 'z' FROM SAME FILE THAT USES script1.sh
sleep 1
while true;
do
sleep 2
echo "DELETING WORDS "
sed -i '/^z/d' "$FILE_OUTPUT"
done
それらは同じファイル (.txt) で動作します。 私が望むのは、それらを同時に実行することであり、それらは順番に動作する必要があります。つまり、P! の後です。スクリプト 1 で最初の行を読み取り、P2 はスクリプト 2 を実行する必要があり、2 行目、3 行目なども同様です...
Cプログラムからこれを行うにはどうすればよいですか? 重要なことは、すべてのプロセスが 1 つのスクリプトを実行し、これらのスクリプトを交互に並行して実行する必要があることです。 このようにして、3 分の 1 のプロセスがその出力を読み取って作業できるようにするために、2 つのプロセスが 1 つの出力を一緒に生成できるようにするという目標を達成しました。
私はそれが明確であることを願っています
ご協力いただきありがとうございます