为什么这样不对?

sh/bash/dash/ksh/zsh等Shell脚本
回复
no_smile_know
帖子: 2
注册时间: 2008-11-04 10:01

为什么这样不对?

#1

帖子 no_smile_know » 2008-11-04 10:11

: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,什么都不懂,谢谢大家了。
no_smile_know
帖子: 2
注册时间: 2008-11-04 10:01

Re: 为什么这样不对?

#2

帖子 no_smile_know » 2008-11-04 12:14

没有人吗?
头像
bones7456
帖子: 8495
注册时间: 2006-04-12 20:05
来自: 杭州
联系:

Re: 为什么这样不对?

#3

帖子 bones7456 » 2008-11-05 9:55

请看清楚这是shell脚本区.
关注我的blog: ε==3
回复