在 C 中使用 popen() 失败?

2024-01-09

我可以运行以下命令

xwd -root | xwdtopnm | pnmtojpeg > screen.jpg

在 Linux 下的终端中,它将生成我当前屏幕的屏幕截图。

我尝试使用代码执行以下操作:

#include <stdio.h>
#include <stdlib.h>
int main()
{
   FILE *fpipe;
   char *command="xwd -root | xwdtopnm | pnmtojpeg";
   char line[256];

   if ( !(fpipe = (FILE*)popen(command,"r")) )
   {  // If fpipe is NULL
      perror("Problems with pipe");
      exit(1);
   }

   while ( fgets( line, sizeof line, fpipe))
   {
      //printf("%s", line);
      puts(line);
   }
   pclose(fpipe);
}

然后我编译并运行该程序./popen > screen.jpg但生成的文件 screen.jpg 无法识别。我怎样才能做到这一点,以便我可以正确地通过我的程序?


你不应该使用fgets and puts用于处理二进制数据。fgets每当它看到换行符时就会停止。更差,puts将输出额外的换行符,并且每当遇到 \0 时它也会停止。使用fread and fwrite反而。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 C 中使用 popen() 失败? 的相关文章

  • fork 和 exec 之间的区别

    两者有什么区别fork and exec 指某东西的用途fork and exec它体现了 UNIX 的精神 它提供了一种非常简单的方法来启动新进程 The fork调用基本上复制了当前进程 在almost任何方式 并非所有内容都会被复制
  • C++ 天花板函数的奇怪结果

    我一直在尝试天花板功能并得到一些奇怪的结果 如果我对十进制数乘以百执行 ceil 运算 我会得到一定的结果 但是 如果我直接对该乘法的结果执行 ceil 我会得到完全不同的输出 另一个问题是 这些不同的结果仅发生在某些数字上 任何帮助 将不
  • lambda 表达式到函数指针的转换

    这是这个问题的后续问题 Lambda 如何作为参数传递 https stackoverflow com questions 3321283 c0x lambda how can i pass as a parameter 据推测 MSDN
  • stl 集的 C# 等效项是什么?

    我想使用 C 将一些值存储在平衡二叉搜索树中 我查看了泛型命名空间中的集合 但没有找到与 stl 集合等效的集合 我可以使用什么通用集合 我不想存储键 值对 只是值 你可以使用HashSet http msdn microsoft com
  • .NET Core 2 - 从启动中调用存储库方法[重复]

    这个问题在这里已经有答案了 我有以下存储库和类 public interface IValueService GetAll public class ValueService IValueService private DataContex
  • const_iterators 更快吗?

    我们的编码指南更喜欢const iterator 因为它们比正常的要快一点iterator 当您使用时 编译器似乎会优化代码const iterator 这真的正确吗 如果是的话 内部到底发生了什么使得const iterator快点 编辑
  • 有没有办法关闭 Hangfire 使用 Serilog 进行的日志记录?

    有没有办法关闭 Hangfire 使用 Serilog 进行的日志记录 我们正在使用我们自己的抽象 我不希望在使用 Serilog 时来自 Hangfire 记录器的所有额外噪音 INIT call under web project na
  • dlopen 或 dlclose 未调用信号处理程序

    我在随机时间内收到分段错误 我注册了信号 但发生分段错误时未调用信号处理程序 include
  • 二元运算符重载、隐式类型转换

    class my bool private bool value public my bool bool value value value explicit operator bool return value friend my boo
  • 使用 INF 文件 C++ 以编程方式安装驱动程序

    这里有人可以告诉我如何安装第 3 方设备驱动程序吗 如果提供了所有必需的文件 即 inf 文件 sys 等 则以编程方式进行 这 该解决方案应运行的最低操作系统是Windows2000 我尝试复制 inf文件放入Win文件夹 INF文件夹和
  • 如何设置cookie值?

    我正在执行以下操作来设置 cookie 值 HttpCookie mycookie new HttpCookie mycookie mycookie Value value1 Case sensitivity mycookie Expire
  • 谷歌基准迭代的意义是什么?

    我正在使用 Google Benchmark 来测量某些代码的执行时间 例如 我编写了以下代码来测量其执行时间性能 include
  • 访问结构向量

    我有一个结构 struct OutputStore int myINT string mySTRING 如果我创建一个 OutputStore 类型的数组 如下所示 OutputStore OutputFileData new Output
  • 如何修改 edmx 的默认代码生成策略?

    我想修改默认的代码生成策略 该怎么做 我只是想修改类名 lt code Escape container gt to Entities并将默认连接字符串更改为name Default 我不想为该项目创建模板文件 我想编辑它以便它可以在全球范
  • C++20 views::join 在生成的嵌套范围::single_view 上进入无限循环

    我正在使用 GCC 实现 v10 2 和 v11 来处理 C 20 范围 测试的行为std views join https en cppreference com w cpp ranges join view 我尝试使用生成嵌套视图sin
  • 将数组显式衰减为指针

    最简洁 最惯用的方式是什么明确地将数组衰减为指针 例如 考虑您需要能够指导 SFINAE 或明确过载的情况 template
  • C# 的 xml 序列化中是否有一个属性可以跳过空数组?

    C 的 xml 序列化中是否有一个属性可以跳过空数组 这将提高 xml 输出的可读性 好吧 你也许可以添加一个ShouldSerializeFoo method using System using System ComponentMode
  • 将纬度/经度转换为 X/Y,以便在美国地图图像上进行阿尔伯斯投影

    我正在尝试使用 C 或 Javascript 将纬度 经度转换为 X Y 坐标 以将带有 CSS 的 div 左 上 定位到美国地图的背景图像上 美国的标准地图投影是阿尔伯斯投影 如下所示 但 StackOverflow 仅提供参考基本墨卡
  • 如何将此 Boost ASIO 示例应用到我的应用程序中

    我已经阅读了很多 ASIO 示例 但我仍然对如何在我的应用程序中使用它们感到困惑 基本上 我的服务器端需要接受超过100个连接 客户端 这部分是通过使用线程池 通常每个CPU核心2 4个线程 来完成的 为简单起见 我们假设只有一个连接 为了
  • 如何使用 __m128i 执行元素左移?

    我发现 SSE 移位指令只能在所有元素上移位相同的量 mm sll epi32 mm slli epi32 这些会移动所有元素 但移动量相同 http software intel com sites products documentat

随机推荐

  • 在 C# 中解密使用 RSA 在 iPhone 上加密的内容时遇到问题

    到目前为止 我已经花了两天时间研究这个问题 并梳理了我可以使用的所有资源 所以这是最后的手段 我有一个 X509 证书 其公钥已存储在 iPhone 的钥匙串中 此时仅限模拟器 在 ASP NET 方面 我已在证书存储区中使用私钥获取了证书
  • 如何使用 aws-java-sdk 从 S3 中逐块读取文件

    我正在尝试从 S3 将大文件读取成块 而不切割任何行以进行并行处理 让我通过例子来解释一下 S3上有1G大小的文件 我想将此文件分成 64 MB 的块 我可以很容易地做到这一点 S3Object s3object s3 getObject
  • 带参数的静态资源构造函数

    我必须在 XAML 文件中创建静态资源
  • 找出用户在浏览器历史记录中的位置

    我知道我使用访问浏览器历史记录history对象 具体来说 我可以使用history back history forward and history go item number or history go url 我试图确定用户当前在浏
  • 如何将有符号整数转换为无符号整数?

    这段代码就像 int x 24 uint y uint x Console WriteLine y o p is 4294967272 为什么 C 中会出现这种类型的行为 详细阐述会很有帮助 谢谢你们 负数 例如 24 表示为二元补码 se
  • 使用实体管理器本机查询插入我的 JPA

    我正在尝试在我的数据库中插入数据 我在我的项目中使用 JPA 这就是我的豆子的样子 PersistenceContext EntityManager em em createNativeQuery INSERT INTO testtable
  • 如何在 quantmod 包中创建技术指标

    我是 R 的新手 在创建技术指标时遇到一些问题 更具体地说 我想创建一个指标 Fibonacci 这将被添加到chartSeries由 5 条水平线组成 我正在使用的数据是股票的收盘价 因此 我想要创建的图表将在最高收盘价点有一条水平线 在
  • 在 Delphi 控制台应用程序中使用 VCL TTimer

    正如题主所说 我在 Delphi 中有一个控制台应用程序 其中包含TTimer多变的 我想做的是将事件处理程序分配给TTimer OnTimer事件 我对 Delphi 完全陌生 我曾经使用 C 向事件添加事件处理程序是完全不同的 我发现
  • Google Guice 是否处于活动状态?

    一年多没有发布任何版本 甚至没有修复小错误 对存储库的提交很少 并且过去两个月没有提交 使用这个库开始新项目安全吗 Guice 4 现在处于测试阶段 请参阅https github com google guice https github
  • 使用 make 文件编译单独目录中的文件

    好吧 我一直无法掌握 make 和 makefile 我尝试通读手册页 但没有成功 所以我就来这里了 L 我有一堆文件开始在一个文件中变得非常不受管理 我正在尝试制作一个操作系统 并且我想尝试将这些文件拆分为单独的子目录 请参阅下面的结构
  • 使用 COUNT 个其他字段更新列是 SQL?

    我设置了以下表格 Articles ID TITLE CONTENT USER NUM COMMENTS COMMENTS ID ARTICLE ID TEXT 我需要一个 sql 语句 它使用针对文章的评论计数来更新文章表的 NUM Co
  • Doctrine MongoDB 结果缓存

    如何缓存 Doctrine MongoDB 结果 查看配置代码 它似乎没有像标准 Doctrine 那样内置结果缓存 只有查询缓存 我想过在应用程序中创建自己的缓存层 但返回的对象非常重 因为它们包含视图不需要的大量 Doctrine 逻辑
  • 如何编写 dockerfile 来执行简单的 bash 脚本?

    我正在尝试编写一个 docker 映像来通过 netcat 运行一个简单的网络服务器 所以我的 docker build 文件夹中有 Dockerfile index html run netcat webserver sh The run
  • SQLite 支架“不起作用”

    在 SQLite 版本 3 7 12 1 控制台 中 此查询不起作用 SELECT FROM A UNION SELECT FROM B EXCEPT SELECT FROM A INTERSECT SELECT FROM B 错误信息 错
  • 与实时 matplotlib 绘图交互

    我正在尝试创建一个实时绘图 该绘图会随着更多数据的可用而更新 import os sys import matplotlib pyplot as plt import time import random def live plot fig
  • TypeScript 不提供函数名称

    我有一些打字稿代码 我正在做一些元编程 我需要能够访问instance func name 但是 TypeScript 在编译的 JS 中省略了函数名称 打字稿 class ClassName func ReturnType 编译后的 Ja
  • PACT .NET 消费者测试:灵活长度数组

    我正在使用 pactNet 来测试一个 API 它应该返回一个灵活长度的数组 如果我调用 myApi items 它应该返回一个消费者不知道其确切大小的项目列表 所以答案应该是这样的 id 1 description foo id 2 de
  • 如何从字典中特定索引处删除对 - Swift?

    如何使用remove at DictionaryIndex
  • 多边形的对角线是在里面还是在外面?

    我有三个连续的多边形点 例如 p1 p2 p3 现在我想知道p1和p3之间的正交是在多边形内部还是在多边形外部 我通过取三个向量 v1 v2 和 v3 来做到这一点 多边形中点 p1 之前的点称为 p0 v1 p0 p1 v2 p2 p1
  • 在 C 中使用 popen() 失败?

    我可以运行以下命令 xwd root xwdtopnm pnmtojpeg gt screen jpg 在 Linux 下的终端中 它将生成我当前屏幕的屏幕截图 我尝试使用代码执行以下操作 include