将python输出管道化到exe输入[Errno 22]的参数无效
我有一个简单的C程序,可以输出argc:将python输出管道化到exe输入[Errno 22]的参数无效,python,c,pipe,Python,C,Pipe,我有一个简单的C程序,可以输出argc: #include <stdio.h> #include <stdlib.h> int main(int argc, char* argv[]) { printf("argc = %d\n", argc); return 0; } #包括 #包括 int main(int argc,char*argv[]) { printf(“argc=%d\n”,argc); 返回0; } 我试图在命令行
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv[])
{
printf("argc = %d\n", argc);
return 0;
}
#包括
#包括
int main(int argc,char*argv[])
{
printf(“argc=%d\n”,argc);
返回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
C:\Users…\bin\Debug>python-C“print('A')”| pwnable.exe
argc=1
在中忽略异常:
OSError:[Errno 22]参数无效
打印出1而不是2
为什么会出现此错误?它意味着什么?管道写入标准输入,而不是命令行参数。如果希望输出为参数,请使用命令替换
pwnable.exe "$(python -c "print('A')")"
错误22似乎是特定于在Windows上打印到管道的问题,请参见以下类似问题: