子进程出现在主进程使用system()调用它之前

时间:2015-04-18 07:04:19

标签: c++ linux

我有以下情况

std::cout<<"--------------------------\n";
std::cout<<argument<<"\n";
std::cout<<"--------------------------\n";
const char *command;
command=argument.c_str();
int status = system(command);
if(status==-1) 
{
 error_number=-2;
 clean_up();
 return error_number;
 }
 /*
    calculation();// few ms...
 */
 // 
 const char *command;
 command=argument2.c_str();
 int status = system(command);
 //

第二个命令的shell脚本回显几个字符串。 现在输出而不是预期的A是B。(?!)

A)      --------------------------

my_command1.sh var1 var2 var3 //  2 minute wall clock, 20 msec cpu time
 --------------------------
 ********************************************
 *** welcome to e_calcsym_ver3.sh                       
 *** Debug  mode                                      
 ********************************************

B)       --------------------------

 my_command1.sh var1 var2  ********************************************
*** welcome to e_calcsym_ver3.sh                        
*** Debug mode                                                      
********************************************var3
--------------------------

第二种情况发生在我有12个以上的进程并行运行时。 在调试过程中,只运行一个进程,总是我有第一种情况。 有什么想法吗?

1 个答案:

答案 0 :(得分:0)

两个进程的输出是混合的,因为在父进程中,您只能写入稍后刷新的缓冲区。使用cout << flush或使用cout << endl代替cout << '\n',因为endl会输出换行符并刷新缓冲区。