gpt4 book ai didi

c - Execv Linux printf 不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:07:12 26 4
gpt4 key购买 nike

我正在尝试使用此 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")不起作用?即使我 sleep ?

最佳答案

当输出到终端时,你的程序应该可以工作,但如果输出被重定向到文件或管道,它就不能正常工作。当 stdout 没有连接到终端时,它的输出是完全缓冲的。在用新程序替换当前进程之前调用 exec 函数不会刷新缓冲区,因此任何缓冲输出都将丢失。

在调用execlp()之前调用fflush(stdout);,问题应该可以解决。你不需要 sleep ,它对输出没有影响。

#include <stdio.h>
#include <unistd.h>

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;
}

关于c - Execv Linux printf 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37554643/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com