C,Bash - 运行bash脚本并在同一文件上并行工作的进程

时间:2013-02-05 21:11:45

标签: c bash unix process fork

这就是我需要的: 我做了一个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个进程一起生成一个输出,以便让三分之一的进程读取该输出并对其进行处理!

我希望它很清楚

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

交错实际执行的过程非常尴尬。

要交错输出,让每个脚本将其STDOUT写入管道,然后编写一个小程序,依次从每个管道读取一行,并将其写入输出。

然而,这似乎是一个很长的问题。如果两个进程真正需要同步 - 每个进程依次执行一个处理步骤 - 最简单的方法是使用一个顺序执行命令的进程。并发很难 - 如果你不需要它就不要使用它。