当前位置: 技术问答>linux和unix
急: 代码那里写错了??dup2 execve写的执行命令的程序, 重定向标准输入、输出、标准错误,无法获取到fdisk 的命令输出。别的命令都可以。附代码
来源: 互联网 发布时间:2016-05-20
本文导语: 急: 代码那里写错了??dup2 execve写的执行命令的程序, 重定向标准输入、输出、标准错误,无法获取到fdisk 的命令输出。别的命令都可以。附代码 在 main 函数里面, 命令行代码可以换。 #include #include ...
急: 代码那里写错了??dup2 execve写的执行命令的程序, 重定向标准输入、输出、标准错误,无法获取到fdisk 的命令输出。别的命令都可以。附代码
在 main 函数里面, 命令行代码可以换。
在 main 函数里面, 命令行代码可以换。
#include
#include
#include
#include
#include
#include
#include
#include
#define RESULT_BUFFER_SIZE 1024/*command result buffer size*/
#define COMMAND_BUFFER_SIZE 30/*command buffer size*/
#define WRITE 1
#define READ 0
#define MAX_ARGV_LEN 150
/*------excute command----*/
int HM_Eecute_Command(char* command,char *inputParam[],char*outputStrs)
{
int iwait = 0;
int outStdPipe[2];
int inStdPipe[2];
int errStdPipe[2];
int pid;
int howMany = 0;
int fatal;
FILE* tmpfile ;
FILE* testfile;
FILE* myfile;
FILE* childfile;
int wlen = 0;
int ret = 0;
int errlen = 0;
char* str = NULL;
int len = 0;
str = malloc(10);
strcpy(str,"hello");
tmpfile = fopen("/root/2009.02.25/debug/creat01.txt","wb");
/* first we create the pipes needed for stdout redirection */
if (pipe(outStdPipe))
{
printf(("Pipe creation errorn"));
return -1;
}
if (pipe(inStdPipe))
{
printf(("Pipe creation errorn"));
return -1;
}
if (pipe(errStdPipe))
{
printf(("Pipe creation errorn"));
return -1;
}
pid = fork();
if (pid)
{
/* this is the parent process */
printf("begin----------parend pid-----------n");
if (pid 0)
{
howMany = read(errStdPipe[READ], outputStrs, RESULT_BUFFER_SIZE);
if(howMany > 0)
{
testfile = fopen("/root/2009.02.25/debug/errfile.txt","wb");
ret = fwrite(errStdPipe,1,RESULT_BUFFER_SIZE,testfile);/*error*/
}
}
else
{
howMany = read(outStdPipe[READ], outputStrs, RESULT_BUFFER_SIZE);
if(howMany > 0)
{
testfile = fopen("/root/2009.02.25/debug/file.txt","wb");
ret = fwrite(outputStrs,1,RESULT_BUFFER_SIZE,testfile);/*success*/
}
else
if(howMany