为什么这样不对?
-
- 帖子: 2
- 注册时间: 2008-11-04 10:01
为什么这样不对?
void ProcessToProcess( char *argv[], int k )
{
int fd[2], fd2, fd3;
pid_t childpid;
pipe(fd);
argv[k] = NULL; //��������ֽ���
if( ( childpid = fork() ) == -1 )
{
perror("fork");
exit(1);
}
if( childpid == 0 )
{
close( fd[0] );
fd2 = dup( STDOUT_FILENO );
close( STDOUT_FILENO );
dup2( fd[1], STDOUT_FILENO );
execute_new( argv );
dup2( fd2, STDOUT_FILENO );
close( fd2 );
exit( 0 );
}
else
{
close( fd[1] );
fd3 = dup( STDIN_FILENO );
close( STDIN_FILENO );
dup2( fd[0], STDIN_FILENO );
execute_new( argv[k+1] );
dup2( fd3, STDIN_FILENO );
close( fd3 );
}
}
注释: 是实现像 ls | more 这样的功能。把一个进程的输出当做另一个进程的输入。
结果却什么也没有显示,感觉管道里面没有写进去东西?
ps: 像这种两个进程同时工作的程序,应该怎么样调试,我有的是eclipse。刚开始用ubuntu,什么都不懂,谢谢大家了。
-
- 帖子: 2
- 注册时间: 2008-11-04 10:01
Re: 为什么这样不对?
没有人吗?
- bones7456
- 帖子: 8495
- 注册时间: 2006-04-12 20:05
- 来自: 杭州
- 联系: