日期:2014-05-16  浏览次数:20616 次

linux上运行system函数时,printf信息未被打印,请高手讲解原因
代码简单,如下:
#include <unistd.h>
int main()
{
    printf("system kill");
    sleep(10);
    system("killall test");
    //system("ls -l");
    return 0;
}
注:test为这个程序的名字
问题如下:
①运行后,直接退出,没有打印出打印信息
②如果将killall行注释,用system("ls -l");则打印信息会在执行完ls -l命令后打印
原理请指明
③如果我想先打印出打印信息,应该怎么做?

------解决方案--------------------

#include <unistd.h>
#include <stdio.h>
int main()
{
    printf("system kill\n");
    fflush(0);
    sleep(10);
    system("killall test");
    //system("ls -l");
    return 0;
}

------解决方案--------------------
printf("system kill");你改成
printf("system kill\n");
数据还在缓冲里,你刷一下就出来了,(因为你直接杀死,还来不及把缓冲里的数据打印出来。)