这题太难了,,各位高手能进来看看嘛,
如下图所示,1.假如运行可执行文件(a.out) 前已载入配置文件"fichier"($./a.out fichier ).执行下图程序后,屏幕显示的结果是什么呢,,,,,,
2.如果去掉第13行的注释,这时管道中有什么信息?就是发生了嘛情况,,,
这高人多,求解答,先谢谢了,,, 管道中传输 argv? 先学下不用截图怎么贴代码 我个人觉得,去掉13行的注释,此时管道中神马都没有,各路高手速来围观,集思广益
openspace 发表于 2013-12-11 15:19 static/image/common/back.gif
管道中传输 argv? 代码如下:谢谢做答
1.int main(int argc, char *argv[]) {
2.int fd; char argument;
3.if ( argc < 2 ) { perror("Argument manquant !"), exit(1); }
4.if (pipe(fd) != 0) { perror("Pipe"); exit(1); }
5.close(0);
6.if ( dup(fd) == -1 ) { perror("Dup fd0"); exit(1); }
7.close(1);
8.if ( dup(fd) == -1 ) { perror("Dup fd1"); exit(1); }
9.if ( fork() == 0 )
10.{ sleep(1);
11. read(fd, argument, sizeof(argument));
12. printf("Argument recu = %s", argument);
13. // pause();
14. exit(0); }
15.else{ write(fd, argv, strlen(argv));
16. printf("Argument envoye = %s", argv);
17. exit(0); }
18.}
timespace 发表于 2013-12-11 15:41 static/image/common/back.gif
先学下不用截图怎么贴代码 屏幕肯定没有输出。
至于管道的内容,我认为什么也没有的可能性最大。
当标准输出是管道的时候是全缓冲,
而pause上面的这条输出语句输出的内容应当不足以填满缓冲区。 本帖最后由 smallmaple 于 2013-12-12 00:45 编辑
我想得太简单了! 啊,屏幕没有输出吗,
我个人觉得应该输出
Argument envoye = fichier
Argument recu = fichier
大家的意见呢?
井蛙夏虫 发表于 2013-12-11 19:52 static/image/common/back.gif
屏幕肯定没有输出。
至于管道的内容,我认为什么也没有的可能性最大。
当标准输出是管道的时候是全缓冲, ... 回复 8# 飞翔的大毛熊
一般标准输出对应文件描述符1,你把标准输出打开到管道的写端,怎么还能输出到屏幕
这是老师给的题,哎,我也没办法啊,问100个人说100个结果,,这尼玛神马老师
井蛙夏虫 发表于 2013-12-12 17:48 static/image/common/back.gif
回复 8# 飞翔的大毛熊
一般标准输出对应文件描述符1,你把标准输出打开到管道的写端,怎么还能输出到屏幕 ...
页:
[1]
2