如何将输出重定向到文件,如果不存在则不创建文件?

伊戈尔·利弗连科(Igor Liferenko)

我需要将输出重定向到具有>外壳程序的文件,但是如果该文件尚不存在,则不应创建该文件。如何实现呢?

我尝试通过创建一个指向文件的符号链接并重定向到该符号链接来进行尝试,但是很遗憾,无论如何该文件都是创建的(如果尚不存在)。

可能我需要重定向到执行检查的单独程序,而不是shell。有人知道一个程序可以做到这一点吗?

注意我需要它在OpenWrt中工作(即使用busybox的实用程序版本)。

伊戈尔·利弗连科(Igor Liferenko)

以下对我有用:

/* Printer device file must not be created if it does not
already exist. This is similar to `cat >', but open()
syscall is without O_CREAT. */

#include <fcntl.h> /* |open| */
#include <stdio.h> /* |fprintf| */
#include <unistd.h> /* |read| */

int main(int argc, char **argv)
{
  int fd;
  if ((fd = open(argv[1], O_WRONLY)) == -1) {
    fprintf(stderr, "open: %m\n");
    return 0;
  }

  char buf[8192];
  ssize_t n, m;

  while((n = read(0, buf, sizeof buf)) > 0) {
    m = write(fd, buf, n);
    if (m == -1) {
      fprintf(stderr, "write: %m\n");
      break;
    }
    if (m != n) {
      fprintf(stderr, "TODO: stuff all bytes in a loop\n");
      break;
    }
  }
  if (n == -1) fprintf(stderr, "read: %m\n");

  close(fd);
  return 0;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如果文件不存在,bash重定向到文件

如果文件不存在,则重定向到根目录

如果不存在,则创建文件夹,如果不存在,则不执行任何操作

使用tee命令将输出重定向到不存在的目录中的文件

如何通过groovy(gradle)将文件复制到目录如果不存在(如果存在则不复制)

NodeJS文件流 - 如果文件不存在,如何创建文件?

如果文件不存在,则重定向到文件并保留网址

PHP创建文件夹(如果不存在)

PHP脚本创建文件(如果不存在)

如果不存在,Python不会创建文件

创建文件夹(如果尚不存在)

创建文件(如果尚不存在)

Java FileOutputStream创建文件(如果不存在)

如果Groovy中不存在,则创建文件

Powershell创建文件夹(如果不存在)

C ++创建文件(如果不存在)

MSBuild复制或创建文件(如果不存在)

Exceljs 如果不存在则创建文件时出错

我如何打开文件进行读写,如果不存在则创建文件而不将其截断?

如何在Perl中读取文件,如果不存在则创建文件?

重定向到不存在的文件目录

如何将 android 的 getevent 输出重定向到文件?

如何将 ngrep 输出重定向到文件

如何将子流程的输出重定向到文件

如何将Systemd服务的输出重定向到文件

如何将jstack输出重定向到文件?

如何将Valgrind的输出重定向到文件?

如何将system()的输出重定向到文件?

如何将python代码的输出重定向到文件