在Linux下面编程。 5

使用匿名管道进行子父进程通信,怎么根据输入字符来判断是否与设定好的相等。(假如我从终端输入一个字符c,而我设定的则是:如果从终端输入一个字符c就结束程序。)我用strcm... 使用匿名管道进行子父进程通信,怎么根据输入字符来判断是否与设定好的相等。(假如我从终端输入一个字符c,而我设定的则是:如果从终端输入一个字符c就结束程序。)
我用strcmp进行比较(没用),用一个变量保存字符c然后用if去判断这个字符变量是否等于c,等于就退出。但是这样写,我从终端输入一个字符c之后就卡死在那了。求高手指点。
展开
 我来答
匿名用户
2015-08-22
展开全部
楼上的问题,我想了下,可能时间比较短有些地方没想好那。正常用无名管道通信的话,如果卡在这里可能是父子进程间的等待没写好,要不就是无名管道开关没写好。而且不知道楼主的程序是写一个类似服务器一样的,两边通信。还是只是一个单个进程程序,只是为了实现父子进程通信。最好能把代码贴出来,,要不知道你哪里错了。随手写了在一个程序中的父子进程通信,,希望对楼主能有帮助吧。(PS:不要笑我,,随手写的不是很规范,,,毕竟俺也是嫌麻烦的^_^)
#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
#include<string.h>
#include<sys/wait.h>
int main()
{
pid_t pid;
int fd[2];
if(pipe(fd)==-1)
{
printf("pipe error\n");
return 0;
}
pid=fork();
if(pid==0)
{
printf("please input :\n");
char buff[10];
scanf("%s",buff);
close(fd[0]);
write(fd[1],buff,strlen(buff));
printf("child write\n");
}
else if(pid>0)
{
wait(NULL);
char buff[10]={0};
close(fd[1]);
read(fd[0],buff,10);
if(strcmp("c",buff)==0)
{
printf("successful\n");

}
else{
printf("error\n");
}
}
}
匿名用户
2015-08-22
展开全部
java可以做到,不知道你用的是什么语言
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式