小编twe*_*hon的帖子

无法在 C 中使用 system() 函数执行“cat”

我有一个函数,它是我的 C 程序中 SIGINT 信号的处理程序,它在执行时只需执行以下命令:

void sigint_handler(int sig)
  {
    system("cat output.txt");
    exit(0);
  }
Run Code Online (Sandbox Code Playgroud)

问题是“cat”命令似乎没有做任何事情。如果我尝试做其他事情而不是“cat”,比如“echo something”,它工作正常,所以我相信问题出在“cat”而不是 system() 函数上。文件“output.txt”位于 C 程序的同一目录中,如果我尝试通过另一个 C 脚本对该文件执行 cat ,它会起作用。此外,如果我尝试从 shell 执行该命令,它会起作用。

我已经检查了从 的返回system("cat output.txt"),它是 0。那么问题是什么?

编辑:文件 output.txt 也在程序中作为 FILE 流(使用fopen())打开,由另一个线程打开,这可能是一个问题吗?

c bash posix system cat

2
推荐指数
1
解决办法
75
查看次数

标签 统计

bash ×1

c ×1

cat ×1

posix ×1

system ×1