这就是我需要的: 我做了一个C程序,它分叉2个孩子:P1,P2 我还制作了一些bash脚本。
我需要P1来运行script1.sh,而P2需要运行script2.sh。
目前我正在使用函数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
他们使用SAME文件(.txt)。 我想要的是在同一时间运行它们 并且它们必须轮流工作,我的意思是在P之后!已经读了第一行的script1,P2必须运行它的脚本2,与第二行,第三行等相同......
如何从C程序中执行此操作?重要的是每个进程都运行一个脚本,这些脚本必须并行执行。 通过这种方式,我实现的目标是让2个进程一起生成一个输出,以便让三分之一的进程读取该输出并对其进行处理!
我希望它很清楚
感谢您的帮助
答案 0 :(得分:1)
交错实际执行的过程非常尴尬。
要交错输出,让每个脚本将其STDOUT写入管道,然后编写一个小程序,依次从每个管道读取一行,并将其写入输出。
然而,这似乎是一个很长的问题。如果两个进程真正需要同步 - 每个进程依次执行一个处理步骤 - 最简单的方法是使用一个顺序执行命令的进程。并发很难 - 如果你不需要它就不要使用它。