这是我的程序foo.c
。当通过Makefile在后台运行程序时,为什么write()调用不在终端上显示输出?
#include <stdio.h>
#include <unistd.h>
int main()
{
int i;
printf("foo\n");
write(0, "bar\n", 4);
return 0;
}
foo
都和bar
被印刷在终端上,如果我在运行前景或背景的程序。
$ gcc foo.c
$ ./a.out
foo
bar
$ ./a.out &
[1] 2081
$ foo
bar
[1]+ Done ./a.out
但是当我通过Makefile
运行程序时,我看到正在打印bar
程序在前台运行,只有当。当程序在后台运行时,它不会打印在终端上。
以下是我的Makefile
的外观。
fg:
gcc foo.c
./a.out
sleep 1
bg:
gcc foo.c
./a.out &
sleep 1
这里是输出。
$ make fg
gcc foo.c
./a.out
foo
bar
sleep 1
$ make bg
gcc foo.c
./a.out &
sleep 1
foo
$
程序在后台经由Makefile
运行时为什么不打印在终端上bar
?
'写(0,'你确定你正在编写'stdout'? –