
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,什么都不懂,谢谢大家了。