猿问

关于c语言中fork()和execv()的问题?

求教使用fork()产生子进程之后,在子进程里面使用execv()调用linux的sort函数(/usr/bin/sort),对一个数组里面的内容排序之后,在父进程输出这个数组是已经排序过的数组还是原来没有被排序的数组呢?如果在父进程当中输出的是没被排序过的数组,请问要怎么样才能得到子进程当中被排序过的数组?谢谢指教!

慕婉清6462132
浏览 413回答 1
1回答

哔哔one

fork----->fork----->fork加入进程Afork出了进程B,然后进程B又fork出了进程C,进程C又fork出了进程Dpipe是管道,只有一个入口,一个出口。可以把入口和出口分别放到父子进程中。父进程负责读,子进程负责写。或者子进程读,父进程写。你的例子里,在进程A里创建管道PipeA,然后fork出进程B。进程AB之间使用PipeA通信。进程B再创建PipeB,然后进程BC之间使用PipeB通信。进程C再创建PipeC,然后进程CD之间使用PipeC通信。如果想把进程A的数据传递给进程D,那么应该:进程A向PipeA写入数据,进程B从PipeA中读取数据,然后再写入PipeB,进程C从PipeB中读取数据,然后再写入PipeC,进程D从PipeC中读取数据
随时随地看视频慕课网APP
我要回答