相关疑难解决方法(0)

在bash中重定向C程序输出时出现问题

我C编码的一个程序,用printf将消息发送到标准输出和我无法将输出重定向到一个文件(从bash中运行).

我试过了:

./program argument >> program.out
./program argument > program.out
./program >> program.out argument
./program > program.out argument
Run Code Online (Sandbox Code Playgroud)

在每种情况下,都会创建文件program.out但它仍然为空.执行结束后,文件大小为0.

如果我在执行程序时省略重定向:

./program argument
Run Code Online (Sandbox Code Playgroud)

然后,使用printf发送到stdout的所有消息都显示在终端中.

我有其他C程序,我没有问题以这种方式重定向输出.它与程序本身有关吗?与论点传递?应该在哪里寻找问题?

关于C程序的一些细节:

  • 它没有从stdin中读取任何内容
  • 它使用BSD Internet Domain套接字
  • 它使用POSIX线程
  • 它使用sigaction为SIGINT信号分配一个特殊的处理函数
  • 它向stdout发送了许多换行符(对于那些认为我应该刷新的人)

一些代码:

int main(int argc, char** argv)
{
    printf("Execution started\n");
    do
    {        
        /* lots of printf here */
    } while (1);
    /* Code never reached */
    pthread_exit(EXIT_SUCCESS);
}
Run Code Online (Sandbox Code Playgroud)

c linux bash printf redirect

9
推荐指数
2
解决办法
8975
查看次数

标签 统计

bash ×1

c ×1

linux ×1

printf ×1

redirect ×1