分页: 1 / 1

为什么这样不对?

发表于 : 2008-11-04 10:11
no_smile_know
:em06
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,什么都不懂,谢谢大家了。

Re: 为什么这样不对?

发表于 : 2008-11-04 12:14
no_smile_know
没有人吗?

Re: 为什么这样不对?

发表于 : 2008-11-05 9:55
bones7456
请看清楚这是shell脚本区.