Execv Linux printf不起作用
我正在尝试使用此c代码运行可执行文件:
int main(int argc, char *argv[]) { printf("hello.\n"); sleep(2); if (execlp("ls","ls","-l",NULL) == -1) printf("Error occured during execute ls.\n"); return 0; }
为什么printf(“你好\ n”)不起作用? 即使我睡觉了?
当输出到终端时,您的程序应该工作,但如果输出重定向到文件或管道,它将无法正常工作。 当stdout
未连接到终端时,其输出完全缓冲。 在用新程序替换当前进程之前调用exec
函数不会刷新缓冲区,因此任何缓冲输出都是很多。
调用fflush(stdout);
在调用execlp()
之前,应该解决问题。 你不需要睡觉,它对输出没有影响。
#include #include int main(int argc, char *argv[]) { printf("hello.\n"); fflush(stdout); if (execlp("ls","ls","-l",NULL) == -1) printf("Error occured during execute ls.\n"); return 0; }