【问题标题】:piping python output to exe input [Errno 22] Invalid argument管道 python 输出到 exe 输入 [Errno 22] 无效参数
【发布时间】:2020-09-04 21:56:01
【问题描述】:

我有一个简单的 C 程序,可以打印出 argc:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char* argv[])
{
    printf("argc = %d\n", argc);
    return 0;
}

我正在尝试使用命令行中 python 命令给出的输入对其进行测试,但出现以下错误:

C:\Users...\bin\Debug>python -c "print('A')" | pwnable.exe
argc = 1
Exception ignored in: <_io.TextIOWrapper name='<stdout>' mode='w' encoding='cp1252'>
OSError: [Errno 22] Invalid argument

打印出 1 而不是 2。

为什么会出现这个错误,是什么意思?

【问题讨论】:

    标签: python c pipe


    【解决方案1】:

    管道写入标准输入,而不是命令行参数。如果您希望输出作为参数,请使用命令替换。

    pwnable.exe "$(python -c "print('A')")"
    

    错误 22 似乎是特定于在 Windows 上打印到管道的问题,请参阅以下类似问题:Python print and wc with invalid argument leads to OSError

    【讨论】:

      猜你喜欢
      • 2019-10-13
      • 1970-01-01
      • 1970-01-01
      • 2021-02-10
      • 2016-05-29
      • 1970-01-01
      • 1970-01-01
      • 2019-04-27
      相关资源
      最近更新 更多