[英]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
的外壳程序处理的,而不是由cat
本身处理的。 最简单的解决方案是调用sh
,并让它调用cat
并处理重定向:
execl("/bin/sh", "sh", "-c", "/bin/cat > test.txt", (char *) NULL);
另一种方法是自己打开文件(使用open
),关闭标准输出,将文件描述符复制到 fd 1 (通过调用dup2
),最后关闭第一个文件描述符。 然后你可以调用execl
,让cat
写入标准输出。 这基本上就是 shell 所做的,但是让sh
为你做要容易得多。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.