当前位置: 技术问答>linux和unix
大家帮忙分析一下程序在哪个地方出了错?管道应用实例.
来源: 互联网 发布时间:2016-06-13
本文导语: #include //monitor程序. #include #include #include #include #include int main(int arg,char* argv[],char** environ) { int fd[2]; pid_t pid; int stat_val; if(arg0)//这个地方总是不太于0,也就是没读到数据,为什么会读不到? ...
#include //monitor程序.
#include
#include
#include
#include
#include
int main(int arg,char* argv[],char** environ)
{
int fd[2];
pid_t pid;
int stat_val;
if(arg0)//这个地方总是不太于0,也就是没读到数据,为什么会读不到?
{
buf[n]='';
printf("ctrlprocess received:%sn",buf);
if(!strcmp(buf,"exit"))
exit(0);
if(!strcmp(buf,"getpid"))
{
printf("my pid is :%dn",getpid());
sleep(3);
exit(0);
}
}
}
monitor通过把管道重定向到stdin标准输入中.
./monitor getpid后,ctrlprocess程序无法从stdin读到数据.
到底错在什么地方?
#include
#include
#include
#include
#include
int main(int arg,char* argv[],char** environ)
{
int fd[2];
pid_t pid;
int stat_val;
if(arg0)//这个地方总是不太于0,也就是没读到数据,为什么会读不到?
{
buf[n]='';
printf("ctrlprocess received:%sn",buf);
if(!strcmp(buf,"exit"))
exit(0);
if(!strcmp(buf,"getpid"))
{
printf("my pid is :%dn",getpid());
sleep(3);
exit(0);
}
}
}
monitor通过把管道重定向到stdin标准输入中.
./monitor getpid后,ctrlprocess程序无法从stdin读到数据.
到底错在什么地方?
|
把read((int)stdin,buf,1024)中的(int)stdin改为0.
|
close(0);
dup(fd[0]);
漏洞不少啊 这用dup2
还有子进程为啥不关闭 close(fd[1]);?
还有出错的话 perror一下
dup(fd[0]);
漏洞不少啊 这用dup2
还有子进程为啥不关闭 close(fd[1]);?
还有出错的话 perror一下
|
0
1
2
在linux分别代表 输入 ,输出 ?等? 等? 没明白,lz搜索下.
1
2
在linux分别代表 输入 ,输出 ?等? 等? 没明白,lz搜索下.