이것이 내가 필요한 것입니다. C 프로그램을 만들었습니다. 두 개의 하위를 포크합니다. P1, P2 나는 bash 스크립트도 일부 작성했습니다.C, Bash - bash 스크립트를 실행하고 같은 파일에서 병렬로 작업하는 프로세스
script1.sh를 실행하려면 P1이 필요하고, script2.sh를 실행하려면 P2가 필요합니다. 현재 system("script_name.sh")
또는 system("script_name &")
함수를 사용하여 비동기로 만들었으므로 올바른 선택인지 모릅니다. 왜냐하면 지금은 원하는대로 작동하지 않기 때문입니다. BTW :
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는 두 번째 줄, 세 번째 줄 등과 같이 script2를 실행해야합니다.
어떻게 C 프로그램에서이 작업을 수행 할 수 있습니까? 중요한 점은 모든 프로세스가 하나의 스크립트를 실행하고 이러한 스크립트를 병렬로 실행해야한다는 것입니다. 이 방법으로 하나의 세 번째 프로세스가 해당 출력을 읽고 작업 할 수 있도록 2 개의 프로세스가 하나의 출력을 함께 생성하도록하는 것을 목표로합니다.
나는 그것이 프로세스의 실제 실행을 인터리브하는 것은 매우 어색 당신의 도움
설명이 명확하지 않으므로 1) 스크립트를 "script &" "script2 &"로 실행하면 "asynchronous"가 실행됩니다. 당신은 당신의 설명이 끝날 때 실제로 "동기화"되도록 의도되어 있음을 암시합니다. 2) 파일에는 script1이 작성한 z 줄이 없으므로 script2가 어떻게 삭제할 수 있습니까? 3) 왜 파이썬으로 모든 것을 작성하지 않았습니까? 펄 등 기타 뭔가 더 좋아 ????? – Vorsprung
시스템 ("script1")을 사용하는 경우 script2가 script1이 완료 될 때까지 기다려야하므로 원하는 내용이 아니며 사용하는 파일의 내용을 작성하지 않았기 때문에 "동기식"일 필요는 없습니다. 그것은 내 C 프로그램의 일부이고 'z'라는 단어가 들어 있습니다. 나는 그것을 공부하고 있기 때문에 나는 이것을 선택하려고했기 때문에 C를 선택한다. – Frank