将python输出管道化到exe输入[Errno 22]的参数无效

2024-06-01 07:35:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个简单的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

为什么会出现这个错误,它意味着什么


Tags: 命令行命令程序returnincludemain错误users
1条回答
网友
1楼 · 发布于 2024-06-01 07:35:48

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

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

错误22似乎与在Windows上打印到管道有关,请参见类似问题:Python print and wc with invalid argument leads to OSError

相关问题 更多 >