我有一个应用程序,它需要向cmd发送命令,然后获取输出(捕获输出)。如何在不使用任何特定于微软视窗的应用程序接口的情况下使用C++来实现这一点?有没有一种方法可以跨平台(例如linux终端)?顺便说一句,我用的是win XP SP3。
我实际上是指重定向输入/输出。例如,在cmd上运行命令"make“,然后在捕获错误消息时出错(重定向到我的应用程序)。
我正在尝试编写一个Python脚本,以测试我用汇编语言编写的一些不同代码的输出是否符合预期输出。但是,我在将输出重定向到文件时遇到了困难。我写了以下内容:
extern printf
LINUX equ 80H ; interupt number for entering Linux kernel
EXIT equ 1 ; Linux system call 1 i.e. exit ()
section .data
intfmt: db "%ld", 10, 0
segment .text
global main
在我的C程序中,运行在Linux上,它使用system()创建子进程,我注意到当我将标准输出重定向到管道或文件时,子进程的输出被发送到缓冲I/O函数(如printf() )的输出之前。当stdout被留给终端时,输出将按照预期的顺序进行。我将程序简化为以下示例:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
printf("1. output from printf()\n");
system("echo '2. output from a command
我希望为存在于不同子目录中的文件运行一个程序,然后将输出重定向到输出文件。我希望将输出保存到程序运行的目录中。
所以我想做这样的事情:
for x in */*.txt; do command $x > output.fsa; done
我的问题是:
上面的循环正确吗?我是否应该改变目录,以便将输出保存在执行命令的目录上,还是linux处理它?
对于如何在输出文件中给出目录的名称有什么想法吗?
我希望将程序的输出重定向到具有变量名的文件,同时重定向可能出现的错误。到目前为止,这是一个脚本:
#!/bin/bash
echo "Se ejecutará el PET-linux.x con PET.inp como input, debe indicarse el nombre del archivo output."
echo "Nombre del archivo .out: "
read outfile
./PET-linux.x < PET.inp > ${outfile}.out 2> /dev/null
echo $?