如何在execl系统调用中使用cat命令创建文本文件?

how to use cat command in execl system call to create a text file?

如何使用 c 中的 execl 系统调用使用 cat 命令创建文本文件

我试过使用

execl("/bin/cat", "cat", ">", "test.txt", NULL);

但它给我输入输出错误

问题是 > 的重定向是由调用 cat 的 shell 处理的,而不是由 cat 本身处理的。最简单的解决方案是改为调用 sh,让它调用 cat 并处理重定向:

execl("/bin/sh", "sh", "-c", "/bin/cat > test.txt", (char *) NULL);

另一种方法是自己打开文件(使用 open),关闭标准输出,将文件描述符复制到 fd 1(通过调用 dup2),最后关闭第一个文件描述符。然后你可以调用 execl,让 cat 写入标准输出。这基本上就是 shell 所做的,但是让 sh 为您做它更容易。