【发布时间】:2015-02-27 11:55:40
【问题描述】:
我为管道写了一个代码,每次父进程先死为什么会发生没有规则哪个进程先执行但这里父总是先死为什么,任何人都可以解释这段代码。
主() {
int data_pass;
int file_pipes[2];
const char *some_data = "my name is khan";
char buffer[BUFSIZ + 1];
pid_t pid;
memset(buffer,'\0',BUFSIZ);
if(pipe(file_pipes) == 0)
{
pid = fork();
switch(pid)
{
case -1:
{
printf("cant create \n");
exit(0);
}
case 0:
{
data_pass = read(file_pipes[0],buffer,BUFSIZ);
printf("readed data is %s\n",buffer);
exit(0);
}
default:
{
sleep(5);
data_pass = write(file_pipes[1],some_data,strlen(some_data));
printf("wrote\n");
}
}
}
exit(0);
}
o/p-> 写了
readed data is my name is khan
【问题讨论】:
-
可能是因为parent已经在运行了,但是child在parent发送数据后需要一点时间才能唤醒。
-
抱歉,我想问为什么会这样。