I have an application that creates a job queue, and then multiple threads execute the jobs. By execute them, I mean they call system() with the job string.
The problem is that output to stdout looks like the output at the bottom of the question. I would like each application run to be separated, so the output would look like:
flac 1.2.1 ... ... ... flac 1.2.1 ... ... ... etc.
I’m using programs I have no control over, and so cannot wrap the IO in mutexes.
How do I get the output to look like the above?
ffllaacc 11..22..11,, CCooppyyrriigghhtt ((CC)) 2000,2001,2002, 2003,220004,2 005,0200,0260,0210,0270 0 2J,o2s0h0 3C,o2a004,2005,2l0s0o6n, 007f l aJco scho mCeosa lwsiotnh AfBl OcL UcfTolEmaLecYs 1Nw.Oi2t .hW1 A,AR BRCSAoONpLTyUYrT.iE gL hYTt h Ni(OsC )W i AsR2 R0fA0rN0eT,eY2 .0s 0o 1fT,th2wi0as0r 2ei,,s2 0af0nr3de, e2y 0os0uo4 f,at 2rw0ea0 e,,2 0wa0en6ld,c 2oy0mo0eu7 ta orJ eor hd iCswotearllicsbooumnte tiotf lruaencdd iecsrot mrceiesbr utwtaieit nhi tcA oBunSndOdiLetUriT oEcnLes Yr. t Na OiT nyW pAceRo Rn`AdfNilTtaYic.o' n sfT.oh ri sTd yeiptsea if`lrfsel .ea s 'f tfwor adreet,a iandl sy.ou a e welcome to redistribute it under certain conditions. Type `flac' for details.
Rather than using system().. you could use popen().
Then, read from each child’s output in the parent program, and do what you want with it (e.g. synchronize on some mutex when outputting each line).